2010-09-20 20 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

相關問題