Ed *_*per 11 sql-server error-handling
我正在开发一个大型SQL Server代码库,其中一些代码库至少从SQL 7开始就已经开发了.
在整个代码库,产生错误的方法是使用下面的语法是,据我所知,无证
RAISERROR <error number> <error message>
Run Code Online (Sandbox Code Playgroud)
所述error number可大于13000的任何值; 表中不需要存在相应的条目sys.messages.该error message也可以是任意的.
以下示例代码
raiserror 13000 'test error'
Run Code Online (Sandbox Code Playgroud)
产生以下输出
Msg 13000, Level 16, State 1, Line 1
test error
Run Code Online (Sandbox Code Playgroud)
这种行为在SQL 2000,2005和2008中是相同的(我没有测试过2008 R2).
我们将尝试在支持的方法规范,但我的问题是在哪里这种行为从摆在首位来了.
我认为这必须一次被记录,支持的行为,但很难找到SQL 7及以前的在线书籍副本.有人知道什么时候支持它或什么时候被弃用,如果有的话?
编辑
为了澄清,根据文档,支持的RAISERROR语法是
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
Run Code Online (Sandbox Code Playgroud)
并且sys.messages应该引发任何未定义的用户错误号,错误消息ID为50000
这看起来可能是SQL Server在Sybase中的起源的回归,其RAISERROR命令具有以下确切语法:
无论它的起源是什么,从SQL Server 2008 R2开始都不推荐使用此语法,并且将在SQL Server 2012中删除此语法(v 11. x).有关详细信息,请参阅SQL Server 2008 R2中的不推荐使用的数据库引擎功能.
| 归档时间: |
|
| 查看次数: |
3644 次 |
| 最近记录: |