sp_altermessage (Transact-SQL)
變更 SQL Server Database Engine 執行個體中之使用者定義或系統訊息的狀態。您可以使用 sys.messages 目錄檢視來檢視這些訊息。
語法
sp_altermessage [ @message_id = ] message_number ,[ @parameter = ]'write_to_log'
,[ @parameter_value = ]'value'
引數
[@message_id = ] message_number
這是要從 [sys.messages] 中加以變更之訊息的錯誤號碼。message_number 是 int,沒有預設值。[ @parameter = ] **'**write_to_log'
用來搭配 @parameter_value,以指出要將訊息寫入 Microsoft Windows 應用程式記錄檔中。write_to_log 是 sysname,沒有預設值。write_to_log 必須設為 WITH_LOG 或 NULL。如果 write_to_log 設為 WITH_LOG 或 NULL,且 @parameter_value 的值是 true,訊息就會寫入 Windows 應用程式記錄檔中。如果 write_to_log 設為 WITH_LOG 或 NULL,且 @parameter_value 的值是 false,訊息就不一定會寫入 Windows 應用程式記錄檔中,但隨著錯誤的產生方式而不同,也可能會寫入。如果指定了 write_to_log,您也必須指定 @parameter_value 的值。[!附註]
如果訊息寫入 Windows 應用程式記錄檔中,它也會寫入 Database Engine 錯誤記錄檔中。
[ @parameter_value = ]**'**value'
用來搭配 @parameter,以指出要將錯誤寫入 Microsoft Windows 應用程式記錄檔中。value 是 varchar(5),沒有預設值。如果是 true,錯誤一律會寫入 Windows 應用程式記錄檔中。如果是 false,錯誤就不一定會寫入 Windows 應用程式記錄檔中,但隨著錯誤的產生方式而不同,也可能會寫入。如果指定了 value,您也必須指定 @parameter 的 write_to_log。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
無
備註
設定了 WITH_LOG 選項的 sp_altermessage,效果類似於 RAISERROR WITH LOG 參數,不過,sp_altermessage 會變更現有訊息的記錄行為。如果訊息已改成 WITH_LOG,它便一律會寫入 Windows 應用程式記錄檔中,不論使用者如何叫用錯誤都是如此。即使執行 RAISERROR 時未設定 WITH_LOG 選項,錯誤仍會寫入 Windows 應用程式記錄檔中。
您可以使用 sp_altermessage 來修改系統訊息。
權限
需要伺服器管理員 (serveradmin) 固定伺服器角色的成員資格。
範例
下列範例會使現有的訊息 55001 記錄到 Windows 應用程式記錄檔中。
sp_altermessage 55001, 'WITH_LOG', 'true';
GO