Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 1
25
) 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 0
de 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 send
of 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 |
|
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
LIKE
Transact-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 NULL
en 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 metWITH LOG
syntaxis - Eventuele
sys.messages
fouten die zijn gewijzigd of gemaakt met behulp vansp_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 demaster
-database. Daarom wordt er geen waarschuwing geactiveerd tenzijxp_logevent
de @database_name voor de waarschuwing ismaster
ofNULL
.
Machtigingen
Standaard kunnen alleen leden van de sysadmin vaste serverfunctie sp_add_alert
uitvoeren.
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