Share via


xp_logevent (Transact-SQL)

將使用者定義的訊息記錄在 SQL Server 記錄檔中及 Windows 事件檢視器中。xp_logevent 可用來傳送警示,而不需要傳送訊息給用戶端。

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

語法

xp_logevent { error_number , 'message' } [ , 'severity' ]

引數

  • error_number
    這是使用者自訂的錯誤號碼 (大於 50,000)。最大值是 2147483647 (2^31 - 1)。

  • 'message'
    這是字元字串,最多 2048 個字元。

  • 'severity'
    這是三個字元字串的其中一個:INFORMATIONAL、WARNING 或 ERROR。severity 為選擇性,且預設值為 INFORMATIONAL。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

xp_logevent 會針對所包含的程式碼範例,傳回下列錯誤訊息:

The command(s) completed successfully.

備註

從 Transact-SQL 程序、觸發程序、批次等傳送訊息時,請利用 RAISERROR 陳述式來取代 xp_logevent。xp_logevent 不會呼叫用戶端的訊息處理常式或設定 @@ERROR。若要將訊息寫入 Windows 事件檢視器和 SQL Server 執行個體內的 SQL Server 錯誤記錄檔中,請執行 RAISERROR 陳述式。

權限

需要 master 資料庫中 db_owner 固定資料庫角色中的成員資格,或系統管理員 (sysadmin) 固定伺服器角色中的成員資格。

範例

下列範例會將訊息連同傳遞到訊息的變數記錄到 Windows 事件檢視器中。

DECLARE @@TABNAME varchar(30)
DECLARE @@USERNAME varchar(30)
DECLARE @@MESSAGE varchar(255)
SET @@TABNAME = 'customers'
SET @@USERNAME = USER_NAME()
SELECT @@MESSAGE = 'The table ' + @@TABNAME + ' is not owned by the user 
   ' + @@USERNAME + '.'

USE master
EXEC xp_logevent 60000, @@MESSAGE, informational