xp_logevent (Transact-SQL)

適用対象:SQL Server

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

Transact-SQL 構文表記規則

構文

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

引数

error_number

より大きい 50000ユーザー定義エラー番号。 最大値は 2147483647 (2^31 - 1) です。

'message'

最大 2048 文字の文字列。

'severity'

次の 3 つの文字列のいずれか。 INFORMATIONALWARNINGERROR 重大度 は省略可能で、既定値は INFORMATIONAL.

リターン コードの値

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

結果セット

xp_logevent は、含まれているコード例の次のエラー メッセージを返します。

The command(s) completed successfully.

解説

Transact-SQL プロシージャ、トリガー、バッチなどのメッセージを送信する場合は、代わりにxp_logeventステートメントをRAISERROR使用します。 xp_logevent は、クライアントのメッセージ ハンドラーを呼び出したり、設定 @@ERRORしたりしません。 Windows イベント ログと SQL Server のインスタンス内の SQL Server エラー ログ ファイルにメッセージを書き込むには、ステートメントを RAISERROR 実行します。

アクセス許可

データベースの固定データベース ロールmasterdb_ownerメンバーシップ、または 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;