sp_add_alert (Transact-SQL)
Erstellt eine Warnung.
Syntax
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' ]
Argumente
[ @name = ] 'name'
Der Name der Warnung. Der Name wird in der E-Mail- oder Pagernachricht angezeigt, die als Reaktion auf die Warnung gesendet wird. Dieser Name muss eindeutig sein und kann das Prozentzeichen (%) enthalten. name ist vom Datentyp sysname und hat keinen Standardwert.[ @message_id = ] message_id
Die Fehlernummer der Meldung, die die Warnung definiert. (Entspricht in der Regel einer Fehlernummer in der sysmessages-Tabelle.) message_id ist vom Datentyp int, der Standardwert ist 0. Wenn severity zur Definition der Warnung verwendet wird, muss message_id den Wert 0 oder NULL haben.Hinweis Nur sysmessages-Fehler, die im Microsoft Windows-Anwendungsprotokoll aufgezeichnet werden, können das Senden einer Warnung auslösen.
[ @severity = ] severity
Der Schweregrad (von 1 bis 25), der die Warnung definiert. Jede in der sysmessages-Tabelle gespeicherte SQL Server-Meldung, die mit dem angegebenen Schweregrad an das Microsoft Windows-Anwendungsprotokoll gesendet wird, löst das Senden einer Warnung aus. severity ist vom Datentyp int und hat den Standardwert 0. Wenn message_id zur Definition der Warnung verwendet wird, muss severity den Wert 0 haben.[ @enabled = ] enabled
Gibt den aktuellen Status der Warnung an. enabled ist vom Datentyp tinyint, der Standardwert ist 1 (aktiviert). Bei 0 ist die Warnung nicht aktiviert und wird nicht ausgelöst.[ @delay_between_responses = ] delay_between_responses
Die Wartezeit in Sekunden zwischen Reaktionen auf die Warnung. delay_between_responsesist vom Datentyp int und hat den Standardwert 0. Dieser Wert gibt an, dass zwischen Reaktionen keine Wartezeit auftritt (jedes Vorkommen der Warnung generiert eine Reaktion). Die Reaktion kann in einer oder beiden der folgenden Formen erfolgen:Als eine oder mehrere per E-Mail oder Pager gesendete Benachrichtigungen.
Als auszuführender Auftrag.
Mit dem Festlegen dieses Werts kann beispielsweise verhindert werden, dass unerwünschte E-Mail-Nachrichten gesendet werden, wenn eine Warnung in kurzen Zeitabständen wiederholt auftritt.
[ @notification_message = ] 'notification_message'
Eine optionale zusätzliche Nachricht, die als Teil der E-Mail-, net send- oder Pagerbenachrichtigung an den Operator gesendet wird. notification_message ist vom Datentyp nvarchar(512) und hat den Standardwert NULL. Das Angeben von notification_message ist hilfreich, um spezielle Anmerkungen hinzuzufügen, z. B. Hilfsmaßnahmen.[ @include_event_description_in = ] include_event_description_in
Gibt an, ob die Beschreibung des SQL Server-Fehlers in die Benachrichtigungsmeldung aufgenommen werden soll. include_event_description_inist vom Datentyp tinyint und hat den Standardwert 5 (E-Mail und net send). Das Argument kann einen der folgenden Werte oder mehrere mit dem logischen Operator OR kombinierte Werte aufweisen.Wichtig Die Optionen für Benachrichtigungen per Pager und NET SEND werden in zukünftigen Versionen von MicrosoftSQL Server aus dem SQL Server-Agent entfernt. Vermeiden Sie die Verwendung dieser Features bei neuen Entwicklungsarbeiten, und planen Sie die Änderung von Anwendungen, die diese Features zurzeit verwenden.
Wert
Beschreibung
0 (Standardwert)
Keine
1
E-Mail
2
Pager
4
net send
[ @database_name = ] 'database'
Die Datenbank, in der der Fehler auftreten muss, damit die Warnung ausgelöst wird. Wenn databasenicht angegeben wird, wird die Warnung unabhängig davon ausgelöst, in welcher Datenbank der Fehler aufgetreten ist. database ist vom Datentyp sysname. In eckige Klammern ([ ]) eingeschlossene Namen sind nicht zulässig. Der Standardwert ist NULL.[ @event_description_keyword = ] 'event_description_keyword_pattern'
Die Zeichenfolge, der die Beschreibung des SQL Server-Fehlers entsprechen muss. Dabei können Platzhalterzeichen für Mustervergleiche wie im Transact-SQL -Ausdruck LIKE verwendet werden. event_description_keyword_pattern ist vom Datentyp nvarchar(100) und hat den Standardwert NULL. Dieser Parameter ist hilfreich zum Filtern von Objektnamen (z. B. %customer_table%).[ @job_id = ] job_id
Die Auftrags-ID des Auftrags, der als Reaktion auf diese Warnung ausgeführt werden soll. job_id ist vom Datentyp uniqueidentifier und hat den Standardwert NULL.[ @job_name = ] 'job_name'
Der Name des Auftrags, der als Reaktion auf diese Warnung ausgeführt werden soll. job_nameist vom Datentyp sysname und hat den Standardwert NULL.Hinweis Es muss entweder job_id oder job_name angegeben werden, aber beide Angaben sind nicht möglich.
[ @raise_snmp_trap = ] raise_snmp_trap
Wird in SQL Server, Version 7.0, nicht unterstützt. raise_snmp_trap ist vom Datentyp tinyint und hat den Standardwert 0.[ @performance_condition = ] 'performance_condition'
Ein Wert im Format 'itemcomparatorvalue'. performance_condition ist vom Datentyp nvarchar(512) und hat den Standardwert NULL. Der Wert besteht aus den folgenden Elementen.Formatelement
Beschreibung
Item
Ein Leistungsobjekt, ein Leistungsindikator oder die benannte Instanz des Indikators
Comparator
Einer der folgenden Operatoren: >, < oder =
Value
Numerischer Wert des Indikators
[ @category_name = ] 'category'
Der Name der Warnungskategorie. category ist vom Datentyp sysname und hat den Standardwert NULL.[ @wmi_namespace= ] 'wmi_namespace'
Der WMI-Namespace zum Abfragen von Ereignissen. wmi_namespace ist vom Datentyp sysname und hat den Standardwert NULL. Es werden nur Namespaces auf dem lokalen Server unterstützt.[ @wmi_query= ] 'wmi_query'
Die Abfrage, die das WMI-Ereignis für die Warnung angibt. wmi_query ist vom Datentyp nvarchar(512) und hat den Standardwert NULL.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Resultsets
Keine
Hinweise
sp_add_alert muss aus der msdb-Datenbank ausgeführt werden.
Unter den folgenden Umständen werden von SQL Server und von SQL Server-Anwendungen generierte Fehler bzw. Meldungen an das Windows-Anwendungsprotokoll gesendet und können somit Warnungen auslösen:
sysmessages-Fehler des Schweregrades 19 oder höher.
Jede RAISERROR-Anweisung, die mit der WITH LOG-Syntax aufgerufen wurde.
Jeder sysmessages-Fehler, der mit sp_altermessage geändert oder erstellt wurde.
Jedes Ereignis, das mithilfe von xp_logevent protokolliert wird.
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.
Überprüfen Sie die folgenden Punkte, wenn eine Warnung nicht ordnungsgemäß funktioniert:
Der SQL Server-Agentdienst wird ausgeführt.
Das Ereignis wird im Windows-Anwendungsprotokoll angezeigt.
Die Warnung ist aktiviert.
Ereignisse, die mit xp_logevent generiert werden, treten in der master-Datenbank auf. Daher wird von xp_logevent erst dann eine Warnung ausgegeben, wenn der @database_name-Wert für die Warnung den Wert 'master' oder NULL hat.
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 AdventureWorks Database-Auftrag ausführt, wenn sie ausgegeben wird.
Hinweis |
---|
Bei diesem Beispiel wird vorausgesetzt, dass die Meldung 55001 und der Back up the AdventureWorks 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 AdventureWorks Database' ;
GO