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