我想将 SQL Server 从 2008 版本升级到 2014 版本。我检查了所有已弃用的功能,包括 raiserror 语法。但是我有很多存储过程要检查。其中一些使用新语法,一些使用旧语法,我需要更改它们的旧语法。如何检查所有程序以检测旧的 raiserror 语法?
我想将 SQL Server 从 2008 版本升级到 2014 版本。我检查了所有已弃用的功能,包括 raiserror 语法。但是我有很多存储过程要检查。其中一些使用新语法,一些使用旧语法,我需要更改它们的旧语法。如何检查所有程序以检测旧的 raiserror 语法?
下面是一个 PowerShell 脚本示例,它使用T-SQL 脚本 DOM 解析器解析指定数据库中所有现有的 T-SQL 模块,并在无法针对目标 SQL 版本解析任何模块时显示错误。这将识别已停用的语法
RAISERROR
以及任何其他已停用的 T-SQL 语法。根据SQL Server 2012 中停用的数据库引擎功能,已弃用的版本
raiserror
是RAISERROR integer 'string'
.注意没有括号,后面有一个数字
RAISERROR
。使用@HandyD 的方法作为起点,您可以做这样的事情(
sqltable
模拟返回的内容INFORMATION_SCHEMA.ROUTINES
)。使用此脚本来识别使用旧语法的任何过程或函数:
这需要在您正在检查的数据库的上下文中执行。对于多个数据库,您需要针对每个数据库运行它。
有关INFORMATION_SCHEMA.ROUTINES的更多信息。