2010-09-20 57 views
9

我正在研究一个大型的SQL Server代码库,其中一些代码至少在SQL 7之后,可能还在开发之中。这是未记录的RAISERROR语法是否有记录并随后被弃用?

在整个代码库,提高错误的方法是使用以下语法是,据我所知,无证

RAISERROR <error number> <error message> 

error number可以是任何值大于13000以上; sys.messages表中不需要存在相应的条目。 error message也可以是任意的。

以下示例代码

raiserror 13000 'test error' 

产生以下输出

Msg 13000, Level 16, State 1, Line 1 
test error 

此行为是在SQL同一2000,2005和2008(我没有测试2008 R2)。

我们将尝试对支持的方法进行标准化,但我的问题是这种行为来自哪里。

我认为这必须曾经被记录,支持的行为,但SQL 7和以前的在线书籍很难找到。有人知道什么时候支持它或者什么时候它被弃用,如果有的话?

编辑 为了澄清,根据documentation,支持的RAISERROR语法是

RAISERROR ({ msg_id | msg_str | @local_variable } 
    { ,severity ,state } 
    [ ,argument [ ,...n ] ]) 
    [ WITH option [ ,...n ] ] 

和未在sys.messages定义的任何用户错误数目应与50000

错误消息ID被升高

回答

0

用户定义的错误消息实际上是 13000到2147483647.

因此,您所描述的行为是正确的 - 您正在引发用户定义的错误。

+1

同意 - 但语法没有记录,根据文档,在sys.messages中没有定义任何用户错误应该引发错误代码为50000 – 2010-09-20 09:20:18

相关问题