次のようなオペレーターへの通知を含むデッドロックアラートを作成しました。
EXEC msdb.dbo.sp_add_alert @name=N'1205 Deadlock',
@message_id=1205,
@severity=0,
@enabled=1,
@delay_between_responses=30,
@include_event_description_in=1,
@database_name=N'myDB',
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000';
このアラートは通知用に登録されています。
それは数か月の間設置されていて、1日に複数のデッドロックがあるが、それは決して現れなかったという歴史です。手動でデッドロックを作成しました。ログファイルに表示されます。
このアラートが通知を生成するために欠けているものは何ですか?その他の通知(例: 18456無効なログインが正常に機能します。
おそらく、エラー1205がERRORLOG
にログインするように設定されていません。 sys.messages
で調べてください。
SELECT *
FROM sys.messages
WHERE message_id = 1205;
列is_event_logged
が0に設定されている場合は、次のように変更します。
EXEC master.sys.sp_altermessage
@message_id = 1205,
@parameter = 'WITH_LOG',
@parameter_value = 'true';
documentation for sp_add_alert
は、アラートが発生する条件を説明します。
備考
sp_add_alertはmsdbデータベースから実行する必要があります。
SQL ServerおよびSQL Serverアプリケーションによって生成されたエラー/メッセージがWindowsアプリケーションログに送信され、アラートが発生する可能性がある状況は次のとおりです。
- 重大度19以上sys.messagesエラー
WITH LOG
構文で呼び出されたRAISERROR
ステートメント- sp_altermessageを使用して変更または作成されたsys.messagesエラー
- xp_logeventを使用してログに記録されたすべてのイベント