sp_altermessage (Transact-SQL)

變更 SQL Server Database Engine 執行個體中之使用者自訂訊息的狀態。您可以利用 [sys.messages] 目錄檢視來檢視使用者自訂訊息。

主題連結圖示Transact-SQL 語法慣例

語法

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