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 0
die 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 |
|
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 mitWITH LOG
Syntax aufgerufen wird - Beliebiger
sys.messages
Fehler geändert oder erstellt mitsp_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 dermaster
-Datenbank auf. Löst daher keine Warnung aus, es sei denn,xp_logevent
die @database_name für die Warnung istmaster
oderNULL
.
Berechtigungen
Standardmäßig können nur Mitglieder der festen Serverrolle sysadmin die Prozedur sp_add_alert
ausfü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