【发布时间】:2018-08-02 20:04:33
【问题描述】:
我最近将 SQL Server 2008 数据库恢复到 SQL Server 2016 实例。大部分功能似乎都可以正常工作,但我的许多存储过程(包括对名为 SYS_USER 的应用程序数据库表的更新)都失败并出现以下错误:
消息 102,级别 15,状态 1,过程 SYS_USERupdate,第 35 行 [批处理开始行 0]
'@errorNumber' 附近的语法不正确
数据库没有名为SYS_Userupdate 的存储过程,并且没有一个过程的代码包含术语@errorNumber。我尝试直接在 SQL Server Management Studio 中从失败的过程之一运行 SQL 查询,并收到相同的错误消息。这是失败的 SQL 查询:
UPDATE SYS_USER
SET SYS_USER_LGF_DT = GETDATE()
WHERE SYS_USER_ID = @SYS_USER_ID
我为@SYS_USER_ID 变量插入了一个有效值。与其他表相关的类似查询运行没有问题。所有存储过程都在 SQL Server 2008 实例上运行,没有错误。另外,将数据库compatibility_level 改为 100,这对于 SQL Server 2016 来说应该是可以接受的。
【问题讨论】:
-
检查
SYS_USER表上的触发器。 (此外,无论来源如何,sp_helptext 'SYS_USERupdate'都应该为您提供定义。) -
@JeroenMostert 表上有触发器,之前不知道(继承了这个数据库)。我会修改这些,看看修改或禁用触发器是否会有所帮助。谢谢!
-
搜索
RAISERROR。为此,语法有所变化。想想2008是最后一个支持旧格式的版本
标签: sql-server stored-procedures sql-server-2016