Delen via


sp_add_alert (Transact-SQL)

van toepassing op:SQL Server-

Hiermee maakt u een waarschuwing.

Transact-SQL syntaxis-conventies

Syntaxis

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

Argumenten

[ @name = ] N'naam'

De naam van de waarschuwing. De naam wordt weergegeven in het e-mailbericht of de pager die wordt verzonden als reactie op de waarschuwing. Deze moet uniek zijn en kan het procentteken (%) bevatten. @nameis sysname, zonder standaardinstelling.

[ @message_id = ] message_id

Het foutberichtnummer waarmee de waarschuwing wordt gedefinieerd. (Dit komt meestal overeen met een foutnummer in de sysmessages tabel.) @message_id is int, met een standaardwaarde van 0. Als @severity wordt gebruikt om de waarschuwing te definiëren, moet @message_id zijn 0 of NULL.

Alleen sysmessages fouten die naar het Microsoft Windows-toepassingslogboek zijn geschreven, kunnen ertoe leiden dat er een waarschuwing wordt verzonden.

[ @severity = ] ernst

Het ernstniveau (van tot en met 125) dat de waarschuwing definieert. @severity is int, met een standaardwaarde van 0. Elk SQL Server-bericht dat is opgeslagen in de sysmessages tabel die is verzonden naar het Windows-toepassingslogboek met de aangegeven ernst, zorgt ervoor dat de waarschuwing wordt verzonden. Als @message_id wordt gebruikt om de waarschuwing te definiëren, moet @severity zijn 0.

[ @enabled = ] ingeschakeld

Geeft de huidige status van de waarschuwing aan. @enabledis klein, met een standaardwaarde van 1 (ingeschakeld). Als 0de waarschuwing niet is ingeschakeld en niet wordt geactiveerd.

[ @delay_between_responses = ] delay_between_responses

De wachttijd, in seconden, tussen reacties op de waarschuwing. @delay_between_responses is int, met een standaardwaarde 0, wat betekent dat er geen wachten tussen reacties is (elk exemplaar van de waarschuwing genereert een antwoord). Het antwoord kan zich in een of beide van deze vormen bevinden:

  • Een of meer meldingen die via e-mail of pager worden verzonden
  • Een taak die moet worden uitgevoerd

Door deze waarde in te stellen, is het mogelijk om bijvoorbeeld te voorkomen dat ongewenste e-mailberichten worden verzonden wanneer een waarschuwing in een korte periode herhaaldelijk plaatsvindt.

[ @notification_message = ] N'notification_message'

Een optioneel extra bericht dat als onderdeel van de e-mail- net sendof pagermelding naar de operator wordt verzonden. @notification_message is nvarchar(512), met een standaardwaarde van NULL. Het opgeven van @notification_message is handig voor het toevoegen van speciale notities, zoals herstelprocedures.

[ @include_event_description_in = ] include_event_description_in

Of de beschrijving van de SQL Server-fout moet worden opgenomen als onderdeel van het meldingsbericht. @include_event_description_in is klein, met een standaardwaarde van 5 (e-mail en net send) en kan een of meer van deze waarden worden gecombineerd met een OR logische operator.

Belangrijk

De Pager en net send opties worden verwijderd uit SQL Server Agent in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functies in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functies.

Waarde Beschrijving
0 Geen
1 E-mail
2 Pager
4 net send

[ @database_name = ] N'database_name'

De database waarin de fout moet optreden om de waarschuwing te activeren. Als @database_name niet is opgegeven, wordt de waarschuwing geactiveerd, ongeacht waar de fout is opgetreden. @database_name is sysname, met een standaardwaarde van NULL. Namen die tussen haakjes ([ ]) staan, zijn niet toegestaan.

[ @event_description_keyword = ] N'event_description_keyword'

Een reeks tekens die moeten worden gevonden in de beschrijving van de SQL Server-fout in het foutberichtlogboek. @event_description_keyword is nvarchar(100), met een standaardwaarde van NULL. Deze parameter is handig voor het filteren van objectnamen (bijvoorbeeld customer_table).

Opmerking

LIKETransact-SQL expressiepatroon-overeenkomende tekens kunnen niet worden gebruikt.

[ @job_id = ] job_id

Het taakidentificatienummer van de taak die moet worden uitgevoerd als reactie op deze waarschuwing. @job_id is uniqueidentifier-, met een standaardwaarde van NULL.

Er moet @job_id of @job_name worden opgegeven, maar beide kunnen niet worden opgegeven.

[ @job_name = ] N'job_name'

De naam van de taak die moet worden uitgevoerd als reactie op deze waarschuwing. @job_name is sysname, met een standaardwaarde van NULL.

Er moet @job_id of @job_name worden opgegeven, maar beide kunnen niet worden opgegeven.

[ @raise_snmp_trap = ] raise_snmp_trap

Niet geïmplementeerd in SQL Server versie 7.0. @raise_snmp_trap is klein, met een standaardwaarde van 0.

[ @performance_condition = ] N'performance_condition'

Een waarde uitgedrukt in de notatie ItemComparatorValue. @performance_condition is nvarchar(512), met een standaardwaarde van NULLen bestaat uit deze elementen.

Element Opmaken Beschrijving
Artikel Een prestatieobject, prestatiemeteritem of benoemd exemplaar van de teller.
Comparator Een van deze operators: >, <of =.
Value Numerieke waarde van de teller.

[ @category_name = ] N'category_name'

De naam van de waarschuwingscategorie. @category_name is sysname, met een standaardwaarde van NULL.

[ @wmi_namespace = ] N'wmi_namespace'

De WMI-naamruimte om een query uit te voeren op gebeurtenissen. @wmi_namespace is sysname, met een standaardwaarde van NULL. Alleen naamruimten op de lokale server worden ondersteund.

[ @wmi_query = ] N'wmi_query'

De query waarmee de WMI-gebeurtenis voor de waarschuwing wordt opgegeven. @wmi_query is nvarchar(512), met een standaardwaarde van NULL.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Resultaatset

Geen.

Opmerkingen

sp_add_alert moet worden uitgevoerd vanuit de msdb-database.

Dit zijn de omstandigheden waarin fouten/berichten die worden gegenereerd door SQL Server- en SQL Server-toepassingen worden verzonden naar het Windows-toepassingslogboek en daarom waarschuwingen kunnen genereren:

  • Fouten met ernst 19 of hoger sys.messages
  • Elke RAISERROR instructie die wordt aangeroepen met WITH LOG syntaxis
  • Eventuele sys.messages fouten die zijn gewijzigd of gemaakt met behulp van sp_altermessage
  • Elke gebeurtenis die is geregistreerd met behulp van xp_logevent

SQL Server Management Studio biedt een eenvoudige, grafische manier om het hele waarschuwingssysteem te beheren en is de aanbevolen manier om een waarschuwingsinfrastructuur te configureren.

Als een waarschuwing niet goed werkt, controleert u of:

  • De SQL Server Agent-service wordt uitgevoerd

  • De gebeurtenis wordt weergegeven in het Windows-toepassingslogboek

  • De waarschuwing is ingeschakeld

  • Gebeurtenissen die met xp_logevent worden gegenereerd, vinden plaats in de master-database. Daarom wordt er geen waarschuwing geactiveerd tenzij xp_logevent de @database_name voor de waarschuwing is master of NULL.

Machtigingen

Standaard kunnen alleen leden van de sysadmin vaste serverfunctie sp_add_alertuitvoeren.

Voorbeelden

Voorbeeld 1: Een waarschuwing voor een taak toevoegen

In het volgende voorbeeld wordt een waarschuwing (testwaarschuwing) toegevoegd waarmee de taak wordt uitgevoerd wanneer deze Back up the AdventureWorks2022 Database wordt geactiveerd.

Opmerking

In dit voorbeeld wordt ervan uitgegaan dat het bericht 55001 en de Back up the AdventureWorks2022 Database taak al bestaan. Het voorbeeld wordt alleen voor illustratieve doeleinden weergegeven.

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

Voorbeeld 2: Een waarschuwing voor een replicatiedrempel toevoegen

In het volgende voorbeeld wordt een waarschuwing toegevoegd om u te laten weten wanneer een replicatietransactie de latentiedrempel heeft overschreden:

EXEC msdb.dbo.sp_add_alert @name=N'Replication Warning: Transactional replication latency (Threshold: latency)',
@message_id=14161,
@severity=0,
@enabled=1,
@delay_between_responses=30,
@include_event_description_in=5,
@category_name=N'Replication',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO