xp_logevent (Transact-SQL)
適用対象:SQL Server
ユーザー定義メッセージを SQL Server ログ ファイルと Windows イベント ログに記録します。
xp_logevent
は、クライアントにメッセージを送信せずにアラートを送信するために使用できます。
構文
xp_logevent { error_number , 'message' } [ , 'severity' ]
引数
大事な
拡張ストアド プロシージャの引数は、「構文の」セクションで説明されているように、特定の順序で入力する必要があります。 パラメーターが順に入力されていない場合は、エラー メッセージが表示されます。
error_number
50000
より大きいユーザー定義エラー番号。 最大値は 2147483647
(2^31 - 1) です。
'message'
最大 2048 文字の文字列。
'severity'
INFORMATIONAL
、WARNING
、またはERROR
の 3 つの文字列のいずれか。
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
固定データベース ロールのメンバーシップ、または固定サーバー ロールsysadmin のメンバーシップが必要です。
例
次の例では、Windows イベント ビューアーのメッセージに渡された変数を使用して、メッセージをログに記録します。
DECLARE @@TABNAME VARCHAR(30),
@@USERNAME VARCHAR(30),
@@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;