sp_add_alert (Transact-SQL)

適用対象:SQL Server

アラートを作成します。

Transact-SQL 構文表記規則

構文

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する必要があります0NULL

アラートを送信できるのは、Microsoft Windows アプリケーション ログに書き込まれたエラーだけです sysmessages

[ @severity = ] 重大度

アラートを定義する重大度レベル (from 1 through 25)。 @severityは int で、既定値は 0. 重大度が指定された Microsoft Windows アプリケーション ログに送信されたテーブルに格納されている sysmessages SQL Server メッセージは、アラートを送信します。 @message_idを使用してアラートを定義する場合は、@severityする0必要があります。

[ @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 エージェントから削除される予定です。 新しい開発作業では、これらの機能の使用を避け、現在これらの機能を使用しているアプリケーションは修正するようにしてください。

Value 説明
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アラートの@database_nameが次の場合を除き、アラートはmasterNULLトリガーされません。

アクセス許可

既定では、 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