Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Skapar en avisering.
Transact-SQL syntaxkonventioner
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' ]
[ ; ]
Argumentpunkter
[ @name = ] N'namn'
Namnet på aviseringen. Namnet visas i det e-postmeddelande eller det pager-meddelande som skickas som svar på aviseringen. Den måste vara unik och kan innehålla procenttecknet (%
).
@name är sysname, utan standard.
[ @message_id = ] message_id
Meddelandefelnumret som definierar aviseringen. (Det motsvarar vanligtvis ett felnummer i sysmessages
tabellen.) @message_id är int, med standardvärdet 0
. Om @severity används för att definiera aviseringen måste @message_id vara 0
eller NULL
.
Endast sysmessages
fel som skrivs till Microsoft Windows-programloggen kan orsaka att en avisering skickas.
[ @severity = ] allvarlighetsgrad
Allvarlighetsgraden (från 1
och med 25
) som definierar aviseringen.
@severity är int, med standardvärdet 0
. Alla SQL Server-meddelanden som lagras i sysmessages
tabellen som skickas till Windows-programloggen med angiven allvarlighetsgrad gör att aviseringen skickas. Om @message_id används för att definiera aviseringen måste @severity vara 0
.
[ @enabled = ] aktiverad
Anger den aktuella statusen för aviseringen.
@enabled är tinyint, med standardvärdet 1
(aktiverat). Om 0
är aviseringen inte aktiverad och utlöses inte.
[ @delay_between_responses = ] delay_between_responses
Väntetiden, i sekunder, mellan svar på aviseringen.
@delay_between_responses är int, med standardvärdet 0
, vilket innebär att det inte finns någon väntan mellan svaren (varje förekomst av aviseringen genererar ett svar). Svaret kan finnas i något av eller båda dessa formulär:
- Ett eller flera meddelanden som skickas via e-post eller sidsökare
- Ett jobb att köra
Genom att ange det här värdet kan du förhindra att till exempel oönskade e-postmeddelanden skickas när en avisering upprepas upprepade gånger under en kort tidsperiod.
[ @notification_message = ] N'notification_message'
Ett valfritt ytterligare meddelande som skickas till operatorn som en del av meddelandet e-post, net send
, eller pager.
@notification_message är nvarchar(512), med standardvärdet NULL
. Att ange @notification_message är användbart för att lägga till särskilda anteckningar, till exempel reparationsprocedurer.
[ @include_event_description_in = ] include_event_description_in
Om beskrivningen av SQL Server-felet ska inkluderas som en del av meddelandemeddelandet.
@include_event_description_in är tinyint, med standardvärdet 5
(e-post och net send
), och kan ha ett eller flera av dessa värden i kombination med en OR
logisk operator.
Viktigt!
Pager och net send
alternativ tas bort från SQL Server Agent i en framtida version av SQL Server. Undvik att använda de här funktionerna i det nya utvecklingsarbetet och planera att ändra program som för närvarande använder dessa funktioner.
Värde | Beskrivning |
---|---|
0 |
Ingen |
1 |
E-post |
2 |
Personsökare |
4 |
net send |
[ @database_name = ] N'database_name'
Databasen där felet måste inträffa för att aviseringen ska utlösas. Om @database_name inte anges utlöses aviseringen oavsett var felet inträffade.
@database_name är sysname, med standardvärdet NULL
. Namn som omges av hakparenteser ([ ]
) tillåts inte.
[ @event_description_keyword = ] N'event_description_keyword'
En sekvens med tecken som måste hittas i beskrivningen av SQL Server-felet i felmeddelandeloggen.
@event_description_keyword är nvarchar(100), med standardvärdet NULL
. Den här parametern är användbar för att filtrera objektnamn (till exempel customer_table
).
Anmärkning
LIKE
Transact-SQL uttrycksmönstermatchande tecken kan inte användas.
[ @job_id = ] job_id
Jobbidentifieringsnumret för jobbet som ska köras som svar på den här aviseringen.
@job_id är unikidentifierare, med standardvärdet NULL
.
Antingen @job_id eller @job_name måste anges, men båda kan inte anges.
[ @job_name = ] N'job_name'
Namnet på jobbet som ska köras som svar på den här aviseringen.
@job_name är sysname, med standardvärdet NULL
.
Antingen @job_id eller @job_name måste anges, men båda kan inte anges.
[ @raise_snmp_trap = ] raise_snmp_trap
Inte implementerad i SQL Server version 7.0.
@raise_snmp_trap är tinyint, med standardvärdet 0
.
[ @performance_condition = ] N'performance_condition'
Ett värde uttryckt i formatet "ItemComparatorValue".
@performance_condition är nvarchar(512), med standardvärdet NULL
, och består av dessa element.
Formatera element | Beskrivning |
---|---|
objekt | Ett prestandaobjekt, en prestandaräknare eller en namngiven instans av räknaren. |
Komparator | En av dessa operatorer: > , < eller = . |
Värde | Numeriskt värde för räknaren. |
[ @category_name = ] N'category_name'
Namnet på aviseringskategorin.
@category_name är sysname med standardvärdet NULL
.
[ @wmi_namespace = ] N'wmi_namespace'
WMI-namnområdet för att fråga efter händelser.
@wmi_namespace är sysname med standardvärdet NULL
. Endast namnområden på den lokala servern stöds.
[ @wmi_query = ] N'wmi_query'
Frågan som anger WMI-händelsen för aviseringen.
@wmi_query är nvarchar(512), med standardvärdet NULL
.
Returnera kodvärden
0
(lyckades) eller 1
(fel).
Resultatuppsättning
Ingen.
Anmärkningar
sp_add_alert
måste köras från msdb
-databasen.
Det här är de omständigheter under vilka fel/meddelanden som genereras av SQL Server- och SQL Server-program skickas till Windows-programloggen och kan därför generera aviseringar:
- Allvarlighetsgrad 19 eller högre
sys.messages
fel - Alla
RAISERROR
instruktioner som anropas medWITH LOG
syntax - Fel som
sys.messages
har ändrats eller skapats med hjälp avsp_altermessage
- Alla händelser som loggas med
xp_logevent
SQL Server Management Studio är ett enkelt, grafiskt sätt att hantera hela aviseringssystemet och är det rekommenderade sättet att konfigurera en aviseringsinfrastruktur.
Om en avisering inte fungerar korrekt kontrollerar du om:
SQL Server Agent-tjänsten körs
Händelsen visades i Windows-programloggen
Aviseringen är aktiverad
Händelser som genereras med
xp_logevent
inträffa imaster
-databasen.xp_logevent
Därför utlöser inte en avisering om inte @database_name för aviseringen ärmaster
ellerNULL
.
Behörigheter
Som standard kan endast medlemmar i sysadmin fast serverroll köra sp_add_alert
.
Exempel
Exempel 1 – Lägga till en avisering för ett jobb
I följande exempel läggs en avisering (testavisering) till som kör jobbet när det Back up the AdventureWorks2022 Database
utlöses.
Anmärkning
Det här exemplet förutsätter att meddelandet 55001 och Back up the AdventureWorks2022 Database
jobbet redan finns. Exemplet visas endast i illustrativt syfte.
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
Exempel 2 – Lägg till en avisering för ett replikeringströskelvärde
I följande exempel läggs en avisering till för att meddela dig när en replikeringstransaktion har överskridit tröskelvärdet för svarstid:
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