Dela via


sp_add_alert (Transact-SQL)

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.messages fel
  • Alla RAISERROR instruktioner som anropas med WITH LOG syntax
  • Fel som sys.messages har ändrats eller skapats med hjälp av sp_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 i master-databasen. xp_logevent Därför utlöser inte en avisering om inte @database_name för aviseringen är master eller NULL.

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