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
LIKETransact-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.messagesfel - Alla
RAISERRORinstruktioner som anropas medWITH LOGsyntax - Fel som
sys.messageshar ä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_logeventinträffa imaster-databasen.xp_logeventDärför utlöser inte en avisering om inte @database_name för aviseringen ärmasterellerNULL.
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
EXECUTE 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:
EXECUTE 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