次の方法で共有


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'

INFORMATIONALWARNING、またはERRORの 3 つの文字列のいずれか。 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),
    @@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;