適用対象: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
エラー -
RAISERROR
構文を使用して呼び出されたWITH LOG
ステートメント - を使用して変更または作成された
sys.messages
エラーsp_altermessage
- を使用してログに記録されたすべてのイベント
xp_logevent
SQL Server Management Studio では、簡単かつグラフィカルに警告システム全体を管理でき、警告インフラストラクチャを構成するのにお勧めです。
アラートが正しく機能していない場合は、次のことを確認します。
SQL Server エージェント サービスが実行されている
Windows アプリケーション ログにイベントが表示された
アラートが有効になっている
xp_logevent
で生成されたイベントはmaster
データベースで発生します。 そのため、アラートのxp_logevent
がまたはmaster
でない限り、NULL
はアラートをトリガーしません。
アクセス許可
既定では、 sp_add_alert を実行できるのは、 sp_add_alert
固定サーバー ロールのメンバーだけです。
例
例 1 - ジョブのアラートを追加する
次の例では、警告発生時にジョブ 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
例 2 - レプリケーションのしきい値のアラートを追加する
次の例では、レプリケーション トランザクションが待機時間のしきい値を超えたときに通知するアラートを追加します。
EXEC msdb.dbo.sp_add_alert @name=N'Replication Warning: Transactional replication latency (Threshold: latency)',
@message_id=14161,
@severity=0,
@enabled=1,
@delay_between_responses=30,
@include_event_description_in=5,
@category_name=N'Replication',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO