Logging

如何解決錯誤 600122,嚴重性 11,狀態 1 已引發

  • January 18, 2022

我的 SQL Server 2008 R2 一直在 SQL Server 日誌中記錄這些錯誤:

引發了錯誤 600122,嚴重性 11,狀態 1,但在 sys.messages 中未找到具有該錯誤號的消息。如果錯誤大於 50000,請確保使用 sp_addmessage 添加使用者定義的消息。

有些是:

引發了錯誤 400006,嚴重性 16,狀態 1,但在 sys.messages 中未找到具有該錯誤號的消息。如果錯誤大於 50000,請確保使用 sp_addmessage 添加使用者定義的消息。

我在伺服器事件日誌中也遇到了類似的錯誤,如下所示:

引發了錯誤 600122,嚴重性 11,狀態 1,但在 sys.messages 中未找到具有該錯誤號的消息。如果錯誤大於 50000,請確保使用 sp_addmessage 添加使用者定義的消息。

它們關於數據庫的兼容性級別是否為https://www.experts-exchange.com/questions/28523045/Error-55555-severity-16-state-1-was-raised-but-no-message-with- that-error-number-was-found-in-sys-messages-If-error-is-larger-than-50000-make-sure-the-user-defined-message-is-added-using-sp-addm。 html說的?

有人解決了嗎?因為它在我的 Prod 環境中,所以我想獲得更多資訊。

非常感謝!

它們是在您的程式碼中生成的,試試這個來找到它們

SELECT  *
FROM    sys.sql_modules SM
WHERE   [definition] LIKE '%600122%' or [definition] LIKE '%400006%'

否則這也會帶來所有自定義錯誤

SELECT  *
FROM    sys.sql_modules SM
WHERE   UPPER([definition]) LIKE '%RAISERROR%' or UPPER([definition]) LIKE '%THROW%'

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/raiserror-transact-sql

使用者定義的錯誤消息的錯誤編號應大於 50000。當未指定 msg_id 時,RAISERROR 會引發錯誤編號為 50000 的錯誤消息。

一種解釋是有RAISERROR用於說日誌記錄的語句。

DECLARE @i int = 600122;
RAISERROR (@i,0,1) -- Logging

這裡@i用於通過消息 id 指定消息@i,應該是RAISERROR ('%d',0,1,@i)

引用自:https://dba.stackexchange.com/questions/185469