Megosztás a következőn keresztül:


sp_add_alert (Transact-SQL)

A következőkre vonatkozik:SQL Server

Riasztást hoz létre.

Transact-SQL szintaxis konvenciók

Szemantika

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

Érvek

[ @name = ] N'név'

A riasztás neve. A név megjelenik a riasztásra válaszul küldött e-mailben vagy lapozóüzenetben. Egyedinek kell lennie, és tartalmaznia kell a százalék (%) karaktert. @namea sysname, alapértelmezés nélkül.

[ @message_id = ] message_id

A riasztást meghatározó üzenet-hibaszám. (Ez általában egy hibaszámnak felel meg a sysmessages táblázatban.) @message_idint, alapértelmezés szerint 0. Ha @severity a riasztás meghatározására szolgál, @message_id kell lennie 0 vagy NULL.

Csak sysmessages a Microsoft Windows alkalmazásnaplóba írt hibák okozhatnak riasztást.

[ @severity = ] súlyosság

A riasztást meghatározó súlyossági szint (átról-lépésre 125). @severityint, alapértelmezés szerint 0. A Windows-alkalmazásnaplóba küldött táblában sysmessages tárolt SQL Server-üzenetek a jelzett súlyossággal a riasztás elküldését okozzák. Ha @message_id a riasztás meghatározására szolgál, @severity kell lennie 0.

[ @enabled = ] engedélyezve

A riasztás aktuális állapotát jelzi. @enabledapró, alapértelmezés szerint 1 (engedélyezve) van. Ha 0a riasztás nincs engedélyezve, és nem aktiválódik.

[ @delay_between_responses = ] delay_between_responses

A riasztásra adott válaszok közötti várakozási időszak másodpercben. @delay_between_responsesint, alapértelmezett értéke 0, ami azt jelenti, hogy nincs várakozás a válaszok között (a riasztás minden előfordulása választ ad). A válasz lehet az alábbi űrlapok egyikében vagy mindkettőben:

  • Egy vagy több e-mailben vagy lapozón keresztül küldött értesítés
  • Végrehajtandó feladat

Ennek az értéknek a beállításával megakadályozhatja például a nemkívánatos e-mailek küldését, ha egy riasztás rövid időn belül ismételten előfordul.

[ @notification_message = ] N'notification_message'

Az e-mail net sendvagy a lapozó értesítése részeként az operátornak küldött opcionális további üzenet. @notification_messagenvarchar(512), alapértelmezett értéke NULL. A @notification_message megadása hasznos speciális jegyzetek, például szervizelési eljárások hozzáadásához.

[ @include_event_description_in = ] include_event_description_in

Azt, hogy az SQL Server-hiba leírása szerepel-e az értesítési üzenetben. @include_event_description_inaz alapértelmezett 5 (e-mail és net send) értékekkel rendelkezik, és ezek közül egy vagy több logikai operátorral OR kombinálható.

Fontos

A rendszer eltávolítja a pagert és net send a beállításokat az SQL Server-ügynökből az SQL Server egy későbbi verziójában. Ne használja ezeket a funkciókat az új fejlesztési munkában, és tervezze módosítani azokat az alkalmazásokat, amelyek jelenleg használják ezeket a funkciókat.

Érték Leírás
0 Egyik sem
1 E-mail
2 Pager
4 net send

[ @database_name = ] N'database_name'

Az adatbázis, amelyben a hiba a riasztás aktiválásához szükséges. Ha @database_name nincs megadva, a riasztás a hiba helyétől függetlenül aktiválódik. @database_name a sysnamealapértelmezett . A zárójelekben ([ ]) lévő nevek nem engedélyezettek.

[ @event_description_keyword = ] N'event_description_keyword'

Egy karaktersorozat, amelyet az SQL Server-hiba leírásában kell megtalálni a hibaüzenetnaplóban. @event_description_keywordnvarchar(100), alapértelmezés szerint NULL. Ez a paraméter hasznos az objektumnevek szűréséhez (például customer_table).

Megjegyzés

LIKETransact-SQL kifejezésmintának megfelelő karakterek nem használhatók.

[ @job_id = ] job_id

A riasztásra válaszul futtatandó feladat feladatazonosítási száma. @job_iduniqueidentifier, alapértelmezett értéke NULL.

Meg kell adni @job_id vagy @job_name, de mindkettőt nem lehet megadni.

[ @job_name = ] N'job_name'

A riasztásra válaszul végrehajtandó feladat neve. @job_name a sysname, alapértelmezés szerint .

Meg kell adni @job_id vagy @job_name, de mindkettőt nem lehet megadni.

[ @raise_snmp_trap = ] raise_snmp_trap

Az SQL Server 7.0-s verziójában nem implementálva. @raise_snmp_trapa tinyint, alapértelmezett értéke 0.

[ @performance_condition = ] N'performance_condition'

Az "ItemComparatorValue" formátumban kifejezett érték. @performance_conditionnvarchar(512), alapértelmezett értéke NULL, és ezekből az elemekből áll.

Elem formázása Leírás
Elem A számláló teljesítményobjektuma, teljesítményszámlálója vagy elnevezett példánya.
Összehasonlító Az alábbi operátorok egyike: >, <vagy =.
Érték A számláló numerikus értéke.

[ @category_name = ] N'category_name'

A riasztási kategória neve. @category_namea sysname, alapértelmezés szerint NULLa .

[ @wmi_namespace = ] N'wmi_namespace'

Az események lekérdezéséhez használt WMI-névtér. @wmi_namespacea sysname, alapértelmezés szerint NULLa . Csak a helyi kiszolgálón lévő névterek támogatottak.

[ @wmi_query = ] N'wmi_query'

A riasztás WMI-eseményét meghatározó lekérdezés. @wmi_querynvarchar(512), alapértelmezett értéke NULL.

Kódértékek visszaadása

0 (sikeres) vagy 1 (hiba).

Eredményhalmaz

Nincs.

Megjegyzések

sp_add_alert a msdb adatbázisból kell futtatni.

Ilyen körülmények között az SQL Server és az SQL Server-alkalmazások által generált hibák/üzenetek a Windows-alkalmazásnaplóba kerülnek, ezért riasztásokat hozhatnak létre:

  • Súlyosság 19 vagy magasabb sys.messages hibák
  • Szintaxissal WITH LOG meghívott bármely RAISERROR utasítás
  • Bármely sys.messages hiba, amely a következő használatával módosult vagy jött létre: sp_altermessage
  • Minden olyan esemény, amely a következő használatával van naplózva: xp_logevent

Az SQL Server Management Studio egyszerű, grafikus módot kínál a teljes riasztási rendszer felügyeletére, és a riasztási infrastruktúra konfigurálásának ajánlott módja.

Ha egy riasztás nem működik megfelelően, ellenőrizze, hogy:

  • Az SQL Server Agent szolgáltatás fut

  • Az esemény megjelent a Windows-alkalmazásnaplóban

  • A riasztás engedélyezve van

  • A xp_logevent létrehozott események a master adatbázisban fordulnak elő. Ezért csak akkor aktivál riasztást, xp_logevent ha a riasztás @database_name vagy masterNULL.

Engedélyek

Alapértelmezés szerint csak a sysadmin rögzített kiszolgálói szerepkör tagjai hajthatnak végre sp_add_alert.

Példák

1. példa – Riasztás hozzáadása feladathoz

Az alábbi példa egy riasztást (tesztriasztást) ad hozzá, amely aktivált állapotban futtatja a Back up the AdventureWorks2022 Database feladatot.

Megjegyzés

Ez a példa feltételezi, hogy az 55001 üzenet és a Back up the AdventureWorks2022 Database feladat már létezik. A példa csak szemléltető célokra jelenik meg.

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

2. példa – Riasztás hozzáadása replikációs küszöbértékhez

Az alábbi példa egy riasztást ad hozzá, amely értesíti, ha egy replikációs tranzakció túllépte a késési küszöbértéket:

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