Freigeben über


sp_add_alert (Transact-SQL)

Gilt für: SQL Server

Erstellt eine Warnung.

Transact-SQL-Syntaxkonventionen

Syntax

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' ]
[ ; ]

Argumente

[ @name = ] N'name'

Der Name der Warnung. Der Name wird in der E-Mail- oder Pagernachricht angezeigt, die als Reaktion auf die Warnung gesendet wird. Er muss eindeutig sein und kann das Prozentzeichen (%) enthalten. @name ist "sysname" ohne Standard.

[ @message_id = ] message_id

Die Fehlernummer der Meldung, die die Warnung definiert. (Normalerweise entspricht sie einer Fehlernummer in der sysmessages Tabelle.) @message_id ist int mit einem Standardwert von 0. Wenn @severity verwendet wird, um die Warnung zu definieren, muss @message_id sein 0 oder NULL.

Nur sysmessages Fehler, die in das Microsoft Windows-Anwendungsprotokoll geschrieben wurden, können dazu führen, dass eine Warnung gesendet wird.

[ @severity = ] Schweregrad

Der Schweregrad (von 1 bis 25) zur Definition der Warnung. @severity ist int mit einem Standardwert von 0. Jede SQL Server-Nachricht, die in der Tabelle gespeichert ist, die sysmessages an das Windows-Anwendungsprotokoll mit dem angegebenen Schweregrad gesendet wird, bewirkt, dass die Warnung gesendet wird. Wenn @message_id verwendet wird, um die Warnung zu definieren, muss @severity sein 0.

[ @enabled = ] aktiviert

Gibt den aktuellen Status der Warnung an. @enabled ist winzig, mit einem Standardwert von 1 (aktiviert). Wenn 0die Warnung nicht aktiviert ist und nicht ausgelöst wird.

[ @delay_between_responses = ] delay_between_responses

Die Wartezeit zwischen Antworten auf die Warnung in Sekunden. @delay_between_responses ist int, mit einem Standardwert von 0, was bedeutet, dass keine Wartezeit zwischen Antworten besteht (jedes Vorkommen der Warnung generiert eine Antwort). Die Reaktion kann in einer oder beiden der folgenden Formen erfolgen:

  • Mindestens eine Benachrichtigung, die per E-Mail oder Pager gesendet wird
  • Ausführen eines Auftrags

Durch Festlegen dieses Werts kann verhindert werden, dass unerwünschte E-Mail-Nachrichten gesendet werden, wenn eine Warnung in kurzer Zeit wiederholt auftritt.

[ @notification_message = ] N'notification_message'

Eine optionale zusätzliche Nachricht, die als Teil der E-Mail net send- oder Pager-Benachrichtigung an den Operator gesendet wird. @notification_message ist nvarchar(512), mit einem Standardwert von NULL. Das Angeben von @notification_message ist nützlich, um spezielle Notizen wie Korrekturverfahren hinzuzufügen.

[ @include_event_description_in = ] include_event_description_in

Gibt an, ob die Beschreibung des SQL Server-Fehlers im Rahmen der Benachrichtigung enthalten sein soll. @include_event_description_in ist winzig, mit einem Standardwert von 5 (E-Mail und net send) und kann einen oder mehrere dieser Werte mit einem OR logischen Operator kombiniert haben.

Wichtig

Der Pager und net send die Optionen werden aus SQL Server-Agent in einer zukünftigen Version von SQL Server entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktionen zurzeit verwenden.

Wert BESCHREIBUNG
0 Keine
1 E-Mail
2 Pager
4 net send

[ @database_name = ] N'database_name'

Die Datenbank, in der der Fehler auftreten muss, damit die Warnung ausgelöst wird. Wenn @database_name nicht angegeben wird, wird die Warnung ausgelöst, unabhängig davon, wo der Fehler aufgetreten ist. @database_name ist "sysname" mit einem Standardwert von NULL. Namen, die in eckige Klammern ([ ]) eingeschlossen sind, sind nicht zulässig.

[ @event_description_keyword = ] N'event_description_keyword'

Eine Abfolge von Zeichen, die in der Beschreibung des SQL Server-Fehlers im Fehlermeldungsprotokoll gefunden werden müssen. @event_description_keyword ist "nvarchar(100)" mit einem Standardwert von NULL. Dieser Parameter ist nützlich zum Filtern von Objektnamen (z. B customer_table. ).

Hinweis

Transact-SQL-Ausdrucksmusterabgleichzeichen LIKE können nicht verwendet werden.

[ @job_id = ] job_id

Die Auftrags-ID des Auftrags, der als Reaktion auf diese Warnung ausgeführt werden soll. @job_id ist eindeutiger Bezeichner mit einem Standardwert von NULL.

Entweder @job_id oder @job_name müssen angegeben werden, beide können jedoch nicht angegeben werden.

[ @job_name = ] N'job_name'

Der Name des Auftrags, der als Reaktion auf diese Warnung ausgeführt werden soll. @job_name ist "sysname" mit der Standardeinstellung "NULL.

Entweder @job_id oder @job_name müssen angegeben werden, beide können jedoch nicht angegeben werden.

[ @raise_snmp_trap = ] raise_snmp_trap

In SQL Server, Version 7.0, nicht implementiert. @raise_snmp_trap ist winzig, mit einem Standardwert von 0.

[ @performance_condition = ] N'performance_condition'

Ein im Format "ItemComparatorValue" ausgedrückter Wert. @performance_condition ist nvarchar(512), mit einem Standardwert von NULL, und besteht aus diesen Elementen.

Format-Element Beschreibung
Element Ein Leistungsobjekt, ein Leistungsindikator oder eine benannte Instanz des Leistungsindikators.
Komparator Einer der folgenden Operatoren: >, , <oder =.
Wert Numerischer Wert des Leistungsindikators

[ @category_name = ] N'category_name'

Der Name der Warnungskategorie. @category_name ist "sysname" mit der Standardeinstellung "NULL.

[ @wmi_namespace = ] N'wmi_namespace'

Der WMI-Namespace zum Abfragen der Ereignisse. @wmi_namespace ist "sysname" mit der Standardeinstellung "NULL. Es werden nur Namespaces auf dem lokalen Server unterstützt.

[ @wmi_query = ] N'wmi_query'

Die Abfrage, die das WMI-Ereignis für die Warnung angibt. @wmi_query ist "nvarchar(512)" mit einem Standardwert von NULL.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Resultset

Keine.

Hinweise

sp_add_alert muss aus der msdb Datenbank ausgeführt werden.

Dies sind die Umstände, unter denen Fehler/Meldungen, die von SQL Server- und SQL Server-Anwendungen generiert werden, an das Windows-Anwendungsprotokoll gesendet werden und daher Warnungen auslösen können:

  • Schweregrad 19 oder höher sys.messages
  • Eine beliebige RAISERROR Anweisung, die mit WITH LOG Syntax aufgerufen wird
  • Beliebiger sys.messages Fehler geändert oder erstellt mit sp_altermessage
  • Jedes ereignis, das unter Verwendung protokolliert wird xp_logevent

Mit SQL Server Management Studio lässt sich das gesamte Warnungssystem auf einfache Weise mit einer grafischen Oberfläche verwalten. Dies ist die empfohlene Vorgehensweise, um eine Warnungsinfrastruktur zu konfigurieren.

Wenn eine Warnung nicht ordnungsgemäß funktioniert, überprüfen Sie, ob:

  • Der SQL Server-Agent-Dienst wird ausgeführt.

  • Das Ereignis wurde im Windows-Anwendungsprotokoll angezeigt.

  • Die Warnung ist aktiviert.

  • Ereignisse, die mit xp_logevent generiert werden, treten in der master-Datenbank auf. Löst daher keine Warnung aus, es sei denn, xp_logevent die @database_name für die Warnung ist master oder NULL.

Berechtigungen

Standardmäßig können nur Mitglieder der festen Serverrolle sysadmin die Prozedur sp_add_alertausführen.

Beispiele

Im folgenden Beispiel wird eine Warnung (Test Alert) hinzugefügt, die den Back up the AdventureWorks2022 Database-Auftrag ausführt, wenn sie ausgegeben wird.

Hinweis

Bei diesem Beispiel wird vorausgesetzt, dass die Meldung 55001 und der Back up the AdventureWorks2022 Database-Auftrag vorhanden sind. Dieses Beispiel dient lediglich zu Illustrationszwecken.

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