sp_add_alert (Transact-sql)sp_add_alert (Transact-SQL)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

アラートを作成します。Creates an alert.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions


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 = ] 'name' The name of the alert. この名前は、警告に対する応答として送信される電子メールまたはポケットベルのメッセージに表示されます。The name appears in the e-mail or pager message sent in response to the alert. 一意である必要があり、パーセント ( % ) 文字を含めることができます。It must be unique and can contain the percent (%) character. 名前sysname,、既定値はありません。name is sysname, with no default.

警告を定義するメッセージエラー番号を [ @message_id = ] message_id します。[ @message_id = ] message_id The message error number that defines the alert. (通常、 sysmessagesテーブルのエラー番号に対応しています)。message_idint,、既定値は0です。(It usually corresponds to an error number in the sysmessages table.) message_id is int, with a default of 0. 重大度を使用して警告を定義する場合は、 message_id0または NULL にする必要があります。If severity is used to define the alert, message_id must be 0 or NULL.


Microsoft Windows アプリケーションログに書き込まれたsysmessagesエラーのみが、アラートを送信する可能性があります。Only sysmessages errors written to the Microsoft Windows application log can cause an alert to be sent.

アラートを定義する重大度レベル ( 1 ~ 25) [ @severity = ] severity ます。[ @severity = ] severity The severity level (from 1 through 25) that defines the alert. Sysmessagesテーブルに格納されている SQL ServerSQL Server メッセージは、指定された重大度で MicrosoftMicrosoft Windows アプリケーションログに送信されると、アラートが送信されます。Any SQL ServerSQL Server message stored in the sysmessages table sent to the MicrosoftMicrosoft Windows application log with the indicated severity causes the alert to be sent. 重大度int,、既定値は0です。severity is int, with a default of 0. 警告を定義するためにmessage_idを使用する場合は、重大度0にする必要があります。If message_id is used to define the alert, severity must be 0.

[ @enabled = ] enabled は、警告の現在の状態を示します。[ @enabled = ] enabled Indicates the current status of the alert. 有効になっているはtinyint,、既定値は 1 (有効) です。enabled is tinyint, with a default of 1 (enabled). 0の場合、警告は無効になり、起動されません。If 0, the alert is not enabled and does not fire.

警告への応答間の待機時間を秒単位で [ @delay_between_responses = ] delay_between_responses します。[ @delay_between_responses = ] delay_between_responses The wait period, in seconds, between responses to the alert. delay_between_responsesint,、既定値は0です。これは、応答の間 (アラートが発生するたびに応答が生成される) の待機がないことを意味します。delay_between_responsesis int, with a default of 0, which means there is no waiting between responses (each occurrence of the alert generates a response). 応答は、次のいずれかまたは両方の形式で指定できます。The response can be in either or both of these forms:

  • 電子メールまたはポケットベルを使用して送信された1つ以上の通知。One or more notifications sent through e-mail or pager.

  • 実行するジョブ。A job to execute.

この値を設定することにより、たとえば、短時間にアラートが繰り返し発生した場合に、不要な電子メールメッセージが送信されないようにすることができます。By setting this value, it is possible to prevent, for example, unwanted e-mail messages from being sent when an alert repeatedly occurs in a short period of time.

[ @notification_message = ] 'notification_message' は、電子メール、 net send、またはポケットベルによる通知の一部としてオペレーターに送信されるオプションの追加メッセージです。[ @notification_message = ] 'notification_message' Is an optional additional message sent to the operator as part of the e-mail, net send, or pager notification. notification_messagenvarchar (512) ,、既定値は NULL です。notification_message is nvarchar(512), with a default of NULL. Notification_messageを指定すると、修復プロシージャなどの特別なメモを追加する場合に便利です。Specifying notification_message is useful for adding special notes such as remedial procedures.

[ @include_event_description_in = ] include_event_description_in SQL ServerSQL Server エラーの説明を通知メッセージの一部として含めるかどうかを指定します。[ @include_event_description_in = ] include_event_description_in Is whether the description of the SQL ServerSQL Server error should be included as part of the notification message. include_event_description_intinyintで、既定値は5 (電子メールとnet send) です。また、これらの値の1つ以上をor論理演算子と組み合わせて使用することもできます。include_event_description_inis tinyint, with a default of 5 (e-mail and net send), and can have one or more of these values combined with an OR logical operator.


今後のバージョンの では、 エージェントからポケットベル オプションと SQL ServerSQL Server net send MicrosoftMicrosoftSQL ServerSQL Serverオプションが削除される予定です。The Pager and net send options will be removed from SQL ServerSQL Server Agent in a future version of MicrosoftMicrosoftSQL ServerSQL Server. 新しい開発作業では、これらの機能の使用を避け、現在これらの機能を使用しているアプリケーションは修正するようにしてください。Avoid using these features in new development work, and plan to modify applications that currently use these features.

ReplTest1Value [説明]Description
00 [InclusionThresholdSetting]None
11 [電子メール]E-mail
22 ポケットベルPager
44 net sendnet send

警告が発生する必要があるデータベースを [ @database_name = ] 'database' します。[ @database_name = ] 'database' The database in which the error must occur for the alert to fire. データベースが指定されていない場合は、エラーが発生した場所に関係なく警告が発生します。If databaseis not supplied, the alert fires regardless of where the error occurred. データベースsysnameです。database is sysname. 角かっこ ([]) で囲まれた名前は使用できません。Names that are enclosed in brackets ([ ]) are not allowed. 既定値は NULL です。The default value is NULL.

SQL ServerSQL Server エラーの説明が似ている必要がある文字シーケンスを [ @event_description_keyword = ] 'event_description_keyword_pattern' します。[ @event_description_keyword = ] 'event_description_keyword_pattern' The sequence of characters that the description of the SQL ServerSQL Server error must be like. Transact-SQLTransact-SQL LIKE 式パターン一致文字を使用できます。LIKE expression pattern-matching characters can be used. event_description_keyword_patternnvarchar (100) ,、既定値は NULL です。event_description_keyword_pattern is nvarchar(100), with a default of NULL. このパラメーターは、オブジェクト名 ( % customer_table% など) をフィルター処理する場合に便利です。This parameter is useful for filtering object names (for example, %customer_table%).

このアラートに応答して実行するジョブのジョブ識別番号を [ @job_id = ] job_id します。[ @job_id = ] job_id The job identification number of the job to run in response to this alert. job_iduniqueidentifier,、既定値は NULL です。job_id is uniqueidentifier, with a default of NULL.

この警告に応答して実行されるジョブの名前を [ @job_name = ] 'job_name' します。[ @job_name = ] 'job_name' The name of the job to be executed in response to this alert. job_namesysname,、既定値は NULL です。job_nameis sysname, with a default of NULL.


Job_idまたはjob_nameのいずれかを指定する必要がありますが、両方を指定することはできません。Either job_id or job_name must be specified, but both cannot be specified.

[ @raise_snmp_trap = ] raise_snmp_trap SQL ServerSQL Server バージョン7.0 では実装されていません。[ @raise_snmp_trap = ] raise_snmp_trap Not implemented in SQL ServerSQL Server version 7.0. raise_snmp_traptinyint,、既定値は0です。raise_snmp_trap is tinyint, with a default of 0.

[ @performance_condition = ] 'performance_condition' は、'itemcomparatorvalue' の形式で表現された値です。[ @performance_condition = ] 'performance_condition' Is a value expressed in the format 'itemcomparatorvalue'. performance_conditionnvarchar (512) で、既定値は NULL です。これらの要素で構成されます。performance_condition is nvarchar(512) with a default of NULL, and consists of these elements.

要素の書式設定Format element [説明]Description
アイテムItem パフォーマンス オブジェクト、パフォーマンス カウンター、またはカウンターの名前付きインスタンス。A performance object, performance counter, or named instance of the counter
演算子Comparator >、<、または = のいずれかの演算子One of these operators: >, <, or =
ValueValue カウンターの数値Numeric value of the counter

警告カテゴリの名前 [ @category_name = ] 'category' ます。[ @category_name = ] 'category' The name of the alert category. categorysysname,、既定値は NULL です。category is sysname, with a default of NULL.

イベントを照会する WMI 名前空間を [ @wmi_namespace = ] 'wmi_namespace' します。[ @wmi_namespace = ] 'wmi_namespace' The WMI namespace to query for events. wmi_namespacesysname,、既定値は NULL です。wmi_namespace is sysname, with a default of NULL. サポートされるのはローカル サーバーの名前空間だけです。Only namespaces on the local server are supported.

警告の WMI イベントを指定するクエリを [ @wmi_query = ] 'wmi_query' します。[ @wmi_query = ] 'wmi_query' The query that specifies the WMI event for the alert. wmi_querynvarchar (512) ,、既定値は NULL です。wmi_query is nvarchar(512), with a default of NULL.

リターン コードの値Return Code Values

0 (成功) または1 (失敗)0 (success) or 1 (failure)

結果セットResult Sets



sp_add_alertは、 msdbデータベースから実行する必要があります。sp_add_alert must be run from the msdb database.

このような状況では、SQL ServerSQL Server および SQL ServerSQL Server アプリケーションによって生成されたエラーやメッセージが Windows アプリケーションログに送信されるため、アラートが発生する可能性があります。These are the circumstances under which errors/messages generated by SQL ServerSQL Server and SQL ServerSQL Server applications are sent to the Windows application log and can therefore raise alerts:

  • 重大度19以上のsys. メッセージエラーSeverity 19 or higher sys.messages errors

  • With LOG 構文を使用して呼び出された RAISERROR ステートメントAny RAISERROR statement invoked with WITH LOG syntax

  • Sp_altermessageを使用して変更または作成されたすべてのsys. メッセージエラーAny sys.messages error modified or created using sp_altermessage

  • Xp_logeventを使用してログに記録されたイベントAny event logged using xp_logevent

SQL Server Management StudioSQL Server Management Studio は、警告システム全体を簡単に管理できるグラフィカルなツールです。警告の基本構成を設定するには、SQL Server Management Studio を使用することをお勧めします。provides an easy, graphical way to manage the entire alerting system and is the recommended way to configure an alert infrastructure.

警告が正常に動作しないときは、次のことを確認してください。If an alert is not functioning properly, check whether:

  • SQL ServerSQL Server エージェントサービスが実行されています。The SQL ServerSQL Server Agent service is running.

  • Windows アプリケーション ログにイベントが表示されること。The event appeared in the Windows application log.

  • アラートが有効になっています。The alert is enabled.

  • xp_logevent で生成されたイベントは master データベースで発生します。Events generated with xp_logevent occur in the master database. このため、xp_logevent では、警告の @database_name'master' または NULL になっていないと、警告はトリガーされません。Therefore, xp_logevent does not trigger an alert unless the @database_name for the alert is 'master' or NULL.


既定では、sp_add_alert を実行できるのは、sysadmin 固定サーバー ロールのメンバーだけです。By default, only members of the sysadmin fixed server role can execute sp_add_alert.


次の例では、警告発生時にジョブ Back up the AdventureWorks2012 Database を実行する Test Alert という警告を追加します。The following example adds an alert (Test Alert) that runs the Back up the AdventureWorks2012 Database job when fired.


この例では、メッセージ55001と Back up the AdventureWorks2012 Database ジョブが既に存在していることを前提としています。This example assumes that the message 55001 and the Back up the AdventureWorks2012 Database job already exist. この例は、説明のためだけに示しています。The example is shown for illustrative purposes only.

USE msdb ;  
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 AdventureWorks2012 Database' ;  

参照See Also

transact-sql ( の) sp_add_notificationsp_add_notification (Transact-SQL)
transact-sql ( の) sp_altermessagesp_altermessage (Transact-SQL)
transact-sql ( の) sp_delete_alertsp_delete_alert (Transact-SQL)
transact-sql ( の) sp_help_alertsp_help_alert (Transact-SQL)
transact-sql ( の) sp_update_alertsp_update_alert (Transact-SQL)
sysperfinfo (transact-sql) sys.sysperfinfo (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)System Stored Procedures (Transact-SQL)