xp_logevent (Transact-SQL)

SQL Server ログ ファイルと Windows イベント ビューアーに、ユーザー定義メッセージを記録します。xp_logevent は、メッセージをクライアントに送信せずに警告を送信する場合に使用できます。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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

引数

  • error_number
    50,000 より大きい、ユーザー定義のエラー番号を指定します。最大値は 2,147,483,647 (2^31 - 1) です。

  • 'message'
    最大 2048 バイトまでの文字列を指定します。

  • 'severity'
    INFORMATIONAL、WARNING、または ERROR のうちいずれかの文字列になります。severity は省略可能で、既定値は INFORMATIONAL です。

リターン コード値

0 (成功) または 1 (失敗)

結果セット

xp_logevent ではコード例に対し、次のエラー メッセージが返されます。

The command(s) completed successfully.

説明

Transact-SQL プロシージャ、トリガー、バッチなどからメッセージを送信する場合は、xp_logevent ではなく RAISERROR ステートメントを使用してください。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