sp_add_alert (Transact-SQL)
適用対象: SQL Server
アラートを作成します。
構文
sp_add_alert [ @name = ] N'name'
[ , [ @message_id = ] message_id ]
[ , [ @severity = ] severity ]
[ , [ @enabled = ] enabled ]
[ , [ @delay_between_responses = ] delay_between_responses ]
[ , [ @notification_message = ] N'notification_message' ]
[ , [ @include_event_description_in = ] include_event_description_in ]
[ , [ @database_name = ] N'database_name' ]
[ , [ @event_description_keyword = ] N'event_description_keyword' ]
[ , { [ @job_id = ] job_id | [ @job_name = ] N'job_name' } ]
[ , [ @raise_snmp_trap = ] raise_snmp_trap ]
[ , [ @performance_condition = ] N'performance_condition' ]
[ , [ @category_name = ] N'category_name' ]
[ , [ @wmi_namespace = ] N'wmi_namespace' ]
[ , [ @wmi_query = ] N'wmi_query' ]
[ ; ]
引数
[ @name = ] N'name'
アラートの名前です。 この名前は、警告に対する応答として送信される電子メールまたはポケットベルのメッセージに表示されます。 一意である必要があり、パーセント (%
) 文字を含めることができます。 @name は sysname で、既定値はありません。
[ @message_id = ] message_id
アラートを定義するメッセージ エラー番号。 (通常は、 sysmessages
テーブルのエラー番号に対応します)。) @message_id は int で、既定値は 0
です。 @severityを使用してアラートを定義する場合は、@message_idを0
またはNULL
する必要があります。
Microsoft Windows アプリケーション ログに書き込まれた sysmessages
エラーのみがアラートを送信する可能性があります。
[ @severity = ] severity
アラートを定義する重大度レベル ( 1
から 25
まで)。 @severity は int で、既定値は 0
です。 指定された重大度で Windows アプリケーション ログに送信された sysmessages
テーブルに格納されている SQL Server メッセージは、アラートを送信します。 @message_idを使用してアラートを定義する場合は、@severityを0
する必要があります。
[ @enabled = ] enabled
警告の現在の状態を示します。 @enabled は tinyint で、既定値は 1
(有効) です。 0
場合、アラートは有効ではなく、起動されません。
[ @delay_between_responses = ] delay_between_responses
アラートへの応答の間の待機時間 (秒単位)。 @delay_between_responses は int で、既定値は 0
です。つまり、応答間で待機する必要はありません (アラートが発生するたびに応答が生成されます)。 応答は、次のいずれかの形式または両方の形式で指定できます。
- 電子メールまたはポケットベルを介して送信された 1 つ以上の通知
- 実行するジョブ
この値を設定すると、たとえば、アラートが短時間で繰り返し発生したときに、不要な電子メール メッセージが送信されないようにすることができます。
[ @notification_message = ] N'notification_message'
電子メール、 net send
、またはポケットベル通知の一部としてオペレーターに送信されるオプションの追加メッセージ。 @notification_message は nvarchar(512) で、既定値は NULL
です。 @notification_messageの指定は、修復手順などの特別なメモを追加する場合に役立ちます。
[ @include_event_description_in = ] include_event_description_in
SQL Server エラーの説明を通知メッセージの一部として含める必要があるかどうか。 @include_event_description_in は tinyint で、既定値は 5
(電子メールと net send
) であり、これらの値の 1 つ以上を OR
論理演算子と組み合わせることができます。
重要
ポケットベルとnet send
のオプションは、今後のバージョンの SQL Server でSQL Server エージェントから削除される予定です。 新しい開発作業では、これらの機能の使用を避け、現在これらの機能を使用しているアプリケーションは修正するようにしてください。
値 | 説明 |
---|---|
0 |
なし |
1 |
電子メール |
2 |
ポケットベル |
4 |
net send |
[ @database_name = ] N'database_name'
どのデータベースでエラーが発生したときに警告を起動するかを指定します。 @database_name指定されていない場合、エラーが発生した場所に関係なくアラートが発生します。 @database_name は sysname で、既定値は NULL
です。 角かっこ ([ ]
) で囲まれた名前は使用できません。
[ @event_description_keyword = ] N'event_description_keyword'
エラー メッセージ ログの SQL Server エラーの説明に含まれている必要がある一連の文字。 @event_description_keyword は nvarchar(100)で、既定値は NULL
です。 このパラメーターは、オブジェクト名 (たとえば、 customer_table
) をフィルター処理する場合に便利です。
Note
Transact-SQL LIKE
式のパターンマッチング文字は使用できません。
[ @job_id = ] job_id
対象となる警告に対する応答として実行するジョブのジョブ ID 番号を指定します。 @job_id は uniqueidentifier で、既定値は NULL
です。
@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。
[ @job_name = ] N'job_name'
このアラートに応答して実行されるジョブの名前。 @job_name は sysname で、既定値は NULL
です。
@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。
[ @raise_snmp_trap = ] raise_snmp_trap
SQL Server バージョン 7.0 では実装されていません。 @raise_snmp_trap は tinyint で、既定値は 0
です。
[ @performance_condition = ] N'performance_condition'
'ItemComparatorValue' の形式で表される値。 @performance_condition は nvarchar(512) で、既定値は NULL
であり、これらの要素で構成されます。
Format 要素 | 説明 |
---|---|
品目 | パフォーマンス オブジェクト、パフォーマンス カウンター、またはカウンターの名前付きインスタンス。 |
コンパレータ | これらの演算子の 1 つ: > 、 < 、または = 。 |
Value | カウンターの数値。 |
[ @category_name = ] N'category_name'
アラート カテゴリの名前。 @category_name は sysname で、既定値は NULL
です。
[ @wmi_namespace = ] N'wmi_namespace'
イベントのクエリを実行する WMI 名前空間。 @wmi_namespace は sysname で、既定値は NULL
です。 サポートされるのはローカル サーバーの名前空間だけです。
[ @wmi_query = ] N'wmi_query'
アラートの WMI イベントを指定するクエリ。 @wmi_query は nvarchar(512) で、既定値は NULL
です。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
ありません。
解説
sp_add_alert
は、 msdb
データベースから実行する必要があります。
SQL Server および SQL Server アプリケーションによって生成されたエラー/メッセージが Windows アプリケーション ログに送信され、アラートを生成できる状況は次のとおりです。
- 重大度 19 以上の
sys.messages
エラー WITH LOG
構文を使用して呼び出されたRAISERROR
ステートメント- を使用して変更または作成された
sys.messages
エラーsp_altermessage
- を使用してログに記録されたすべてのイベント
xp_logevent
SQL Server Management Studio では、簡単かつグラフィカルに警告システム全体を管理でき、警告インフラストラクチャを構成するのにお勧めです。
アラートが正しく機能していない場合は、次のことを確認します。
SQL Server エージェント サービスが実行されている
Windows アプリケーション ログにイベントが表示された
アラートが有効になっている
xp_logevent
で生成されたイベントはmaster
データベースで発生します。 そのため、アラートの@database_nameがmaster
またはNULL
でない限り、xp_logevent
はアラートをトリガーしません。
アクセス許可
既定では、 sp_add_alert を実行できるのは、 sp_add_alert
固定サーバー ロールのメンバーだけです。
例
次の例では、警告発生時にジョブ Back up the AdventureWorks2022 Database
を実行する Test Alert という警告を追加します。
Note
この例では、メッセージ 55001 と Back up the AdventureWorks2022 Database
ジョブが既に存在することを前提としています。 この例は説明のみを目的として示されています。
USE msdb;
GO
EXEC dbo.sp_add_alert
@name = N'Test Alert',
@message_id = 55001,
@severity = 0,
@notification_message = N'Error 55001 has occurred. The database will be backed up...',
@job_name = N'Back up the AdventureWorks2022 Database';
GO