sp_add_alert (Transact-SQL)

警告を作成します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_add_alert [ @name = ] 'name' 
     [ , [ @message_id = ] message_id ] 
     [ , [ @severity = ] severity ] 
     [ , [ @enabled = ] enabled ]
     [ , [ @delay_between_responses = ] delay_between_responses ] 
     [ , [ @notification_message = ] 'notification_message' ] 
     [ , [ @include_event_description_in = ] include_event_description_in ] 
     [ , [ @database_name = ] 'database' ] 
     [ , [ @event_description_keyword = ] 'event_description_keyword_pattern' ] 
     [ , { [ @job_id = ] job_id | [ @job_name = ] 'job_name' } ] 
     [ , [ @raise_snmp_trap = ] raise_snmp_trap ] 
     [ , [ @performance_condition = ] 'performance_condition' ] 
     [ , [ @category_name = ] 'category' ] 
     [ , [ @wmi_namespace = ] 'wmi_namespace' ]
     [ , [ @wmi_query = ] 'wmi_query' ]

引数

  • [ @name = ] 'name'
    警告の名前を指定します。この名前は、警告に対する応答として送信される電子メールまたはポケットベルのメッセージに表示されます。警告名は一意であることが必要で、パーセント (%) 文字を使用できます。name のデータ型は sysname で、既定値はありません。

  • [ @message_id = ] message_id
    警告を定義するメッセージ エラー番号を指定します。通常これは sysmessages テーブルのエラー番号に対応します。message_id のデータ型は int で、既定値は 0 です。severity を使用して警告を定義する場合、message_id は 0 または NULL になります。

    注意注意

    警告が送信されるのは、Microsoft Windows アプリケーション ログに sysmessages エラーが書き込まれるときだけです。

  • [ @severity = ] severity
    警告を定義する、1 から 25 の重大度レベルを指定します。sysmessages テーブルに格納されている SQL Server メッセージで、指定した重大度が付けられたメッセージが Microsoft Windows アプリケーション ログに送られると、警告が送信されます。severity のデータ型は int で、既定値は 0 です。message_id を使用して警告を定義する場合、severity は 0 にする必要があります。

  • [ @enabled = ] enabled
    警告の現在の状態を示します。enabled のデータ型は tinyint で、既定値は 1 (有効) です。0 を指定した場合、警告は無効になり、送信されません。

  • [ @delay_between_responses = ] delay_between_responses
    警告に対する応答から次の応答までの待機時間を秒単位で指定します。delay_between_responses のデータ型は int で、既定値は 0 です。既定値は、応答から応答までの待機時間を示すのではなく、警告が発生するたびに応答が返されます。応答は、次のいずれかまたは両方の方法で行うことができます。

    • 1 つ以上の通知を電子メールまたはポケットベルで送信する。

    • ジョブを実行する。

    この値を設定すると、たとえば短時間に繰り返し警告が発生したとき、不要な電子メール メッセージの送信を防止できます。

  • [ @notification_message = ] '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 論理演算子を使用します。

    重要な注意事項重要

    今後のバージョンの MicrosoftSQL Server では、SQL Server エージェントからポケットベル オプションと net send オプションが削除される予定です。新しい開発作業では、これらの機能の使用を避け、現在これらの機能を使用しているアプリケーションは修正するようにしてください。

    説明

    0 (既定値)

    なし

    1

    電子メール

    2

    ポケットベル

    4

    net send

  • [ @database_name =] 'database'
    どのデータベースでエラーが発生したときに警告を起動するかを指定します。databaseを指定しなかった場合は、エラーがどのデータベースで発生しても警告が起動します。database のデータ型は sysname です。角かっこ ([ ]) で囲まれた名前は使用できません。既定値は NULL です。

  • [ @event_description_keyword = ] 'event_description_keyword_pattern'
    SQL Server エラーの説明に、どのような文字のシーケンスが含まれている必要があるかを指定します。Transact-SQL LIKE 式のパターン検索文字を使用できます。event_description_keyword_pattern のデータ型は nvarchar(100) で、既定値は NULL です。このパラメータは、オブジェクト名をフィルタ選択する場合に便利です (例、%customer_table%)。

  • [ @job_id = ] job_id
    対象となる警告に対する応答として実行するジョブのジョブ ID 番号を指定します。job_id のデータ型は uniqueidentifier で、既定値は NULL です。

  • [ @job_name =] 'job_name'
    この警告への応答として実行するジョブの名前を指定します。job_nameのデータ型は sysname で、既定値は NULL です。

    注意注意

    job_id または job_name のいずれかを指定する必要があります。両方を指定することはできません。

  • [ @raise_snmp_trap = ] raise_snmp_trap
    SQL Server Version 7.0 では実装されていません。raise_snmp_trap のデータ型は tinyint で、既定値は 0 です。

  • [ @performance_condition = ] 'performance_condition'
    'itemcomparatorvalue' の形式で表す値を指定します。performance_condition のデータ型は nvarchar(512) で、既定値は NULL です。次の要素を含みます。

    形式の要素

    説明

    Item

    パフォーマンス オブジェクト、パフォーマンス カウンタ、またはカウンタの名前付きインスタンス。

    Comparator

    演算子 >、<、= のいずれか。

    Value

    カウンタの数値。

  • [ @category_name = ] 'category'
    警告カテゴリの名前を指定します。category のデータ型は sysname で、既定値は NULL です。

  • [ @wmi_namespace= ] 'wmi_namespace'
    イベントのクエリに対する WMI 名前空間を指定します。wmi_namespace のデータ型は sysname で、既定値は NULL です。サポートされるのはローカル サーバーの名前空間だけです。

  • [ @wmi_query= ] 'wmi_query'
    警告に対する WMI イベントを指定するクエリを指定します。wmi_query のデータ型は nvarchar(512) で、既定値は NULL です。

リターン コード値

0 (成功) または 1 (失敗)

結果セット

なし

説明

sp_add_alert は、msdb データベースから実行する必要があります。

SQL Server および SQL Server のアプリケーションで生成されたエラーやメッセージが Windows のアプリケーション ログに送られます。したがって、警告を起動できるのは次の場合です。

  • 重大度が 19 以上の sysmessages エラーが発生した場合。

  • WITH LOG 構文で RAISERROR ステートメントが呼び出された場合。

  • sp_altermessage を使用して修正または作成された sysmessages エラーが発生した場合。

  • xp_logevent を使用してイベントがログに記録された場合。

SQL Server Management Studio は、警告システム全体を簡単に管理できるグラフィカルなツールです。警告の基本構成を設定するには、SQL Server Management Studio を使用することをお勧めします。

警告が正常に動作しないときは、次のことを確認してください。

  • SQL Server エージェントのサービスが実行されていること。

  • Windows アプリケーション ログにイベントが表示されること。

  • 警告が有効になっていること。

  • xp_logevent で生成されたイベントは master データベースで発生します。このため、xp_logevent では、警告の @database_name'master' または NULL になっていないと、警告が起動されません。

権限

既定では、sp_add_alert を実行できるのは、sysadmin 固定サーバー ロールのメンバだけです。

次の例では、警告発生時にジョブ Back up the AdventureWorks Database を実行する Test Alert という警告を追加します。

注意注意

この例では、メッセージ 55001 と、ジョブ Back up the AdventureWorks 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 AdventureWorks Database' ;
GO