Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Tworzy alert.
Transact-SQL konwencje składni
Składnia
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' ]
[ ; ]
Argumenty (w programowaniu)
[ @name = ] N'name'
Nazwa alertu. Nazwa jest wyświetlana w wiadomości e-mail lub pager wysłanej w odpowiedzi na alert. Musi być unikatowy i może zawierać znak procentu (%
).
@name jest nazwą systemu bez wartości domyślnej.
[ @message_id = ] message_id
Numer błędu komunikatu definiujący alert. (Zazwyczaj odpowiada on numerowi błędu sysmessages
w tabeli). @message_id jest int z wartością domyślną 0
. Jeśli @severity służy do definiowania alertu, @message_id musi mieć 0
wartość lub NULL
.
Tylko sysmessages
błędy zapisane w dzienniku aplikacji systemu Microsoft Windows mogą spowodować wysłanie alertu.
[ @severity = ] ważność
Poziom ważności (od 1
do 25
) definiujący alert.
@severity jest int z wartością domyślną 0
. Każdy komunikat programu SQL Server przechowywany w sysmessages
tabeli wysłany do dziennika aplikacji systemu Windows o wskazanej ważności powoduje wysłanie alertu. Jeśli @message_id służy do definiowania alertu, @severity musi mieć wartość 0
.
[ @enabled = ] włączone
Wskazuje bieżący stan alertu.
@enabled jest tinyint, z wartością domyślną 1
(włączoną). Jeśli 0
alert nie jest włączony i nie zostanie wyzwolony.
[ @delay_between_responses = ] delay_between_responses
Okres oczekiwania (w sekundach) między odpowiedziami na alert.
@delay_between_responses jest int z wartością domyślną 0
, co oznacza, że nie ma oczekiwania między odpowiedziami (każde wystąpienie alertu generuje odpowiedź). Odpowiedź może znajdować się w obu tych formularzach:
- Co najmniej jedno powiadomienie wysyłane pocztą e-mail lub pager
- Zadanie do wykonania
Ustawiając tę wartość, można zapobiec wysyłaniu niechcianych wiadomości e-mail, gdy alert wielokrotnie występuje w krótkim czasie.
[ @notification_message = ] N'notification_message'
Opcjonalna dodatkowa wiadomość wysłana do operatora w ramach powiadomienia e-mail, net send
lub pager.
@notification_message to nvarchar(512), z wartością domyślną NULL
. Określenie @notification_message przydaje się do dodawania specjalnych notatek, takich jak procedury naprawcze.
[ @include_event_description_in = ] include_event_description_in
Czy opis błędu programu SQL Server powinien zostać uwzględniony w ramach komunikatu powiadomienia.
@include_event_description_in jest tinyint, z wartością domyślną 5
(e-mail i net send
), i może mieć co najmniej jedną z tych wartości w połączeniu z operatorem logicznym OR
.
Ważne
Opcje i net send
pager zostaną usunięte z programu SQL Server Agent w przyszłej wersji programu SQL Server. Unikaj używania tych funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tych funkcji.
Wartość | Opis |
---|---|
0 |
Żaden |
1 |
|
2 |
Pejdżer |
4 |
net send |
[ @database_name = ] N'database_name'
Baza danych, w której musi wystąpić błąd, aby alert został wyzwolony. Jeśli @database_name nie zostanie podany, alert zostanie wyzwolony niezależnie od tego, gdzie wystąpił błąd.
@database_name jest sysname z wartością domyślną NULL
. Nazwy ujęte w nawiasy kwadratowe ([ ]
) nie są dozwolone.
[ @event_description_keyword = ] N'event_description_keyword'
Sekwencja znaków, które należy znaleźć w opisie błędu programu SQL Server w dzienniku komunikatów o błędzie.
@event_description_keyword to nvarchar(100), z wartością domyślną NULL
. Ten parametr jest przydatny do filtrowania nazw obiektów (na przykład customer_table
).
Uwaga
LIKE
Transact-SQL nie można używać znaków pasujących do wzorca wyrażeń.
[ @job_id = ] job_id
Numer identyfikacyjny zadania do uruchomienia w odpowiedzi na ten alert.
@job_id jest unikatowyidentifierz wartością domyślną NULL
.
Należy określić @job_id lub @job_name, ale nie można określić obu tych elementów.
[ @job_name = ] N'job_name'
Nazwa zadania do wykonania w odpowiedzi na ten alert.
@job_name jest nazwa systemuz wartością domyślną NULL
.
Należy określić @job_id lub @job_name, ale nie można określić obu tych elementów.
[ @raise_snmp_trap = ] raise_snmp_trap
Nie zaimplementowano w programie SQL Server w wersji 7.0.
@raise_snmp_trap jest tinyint, z wartością domyślną 0
.
[ @performance_condition = ] N'performance_condition'
Wartość wyrażona w formacie "ItemComparatorValue".
@performance_condition to nvarchar(512), z wartością domyślną NULL
, i składa się z tych elementów.
Format, element | Opis |
---|---|
Produkt | Obiekt wydajności, licznik wydajności lub nazwane wystąpienie licznika. |
Komparator | Jeden z następujących operatorów: > , lub = < . |
Wartość | Wartość liczbowa licznika. |
[ @category_name = ] N'category_name'
Nazwa kategorii alertów.
@category_name to nazwa systemu z wartością domyślną NULL
.
[ @wmi_namespace = ] N'wmi_namespace'
Przestrzeń nazw usługi WMI do wykonywania zapytań o zdarzenia.
@wmi_namespace to nazwa systemu z wartością domyślną NULL
. Obsługiwane są tylko przestrzenie nazw na serwerze lokalnym.
[ @wmi_query = ] N'wmi_query'
Zapytanie określające zdarzenie WMI dla alertu.
@wmi_query to nvarchar(512), z wartością domyślną NULL
.
Zwracanie wartości kodu
0
(powodzenie) lub 1
(niepowodzenie).
Zestaw wyników
Żaden.
Uwagi
sp_add_alert
należy uruchomić z bazy danych msdb
.
Są to okoliczności, w których błędy/komunikaty generowane przez program SQL Server i aplikacje programu SQL Server są wysyłane do dziennika aplikacji systemu Windows i w związku z tym mogą zgłaszać alerty:
- Błędy o ważności 19 lub większej
sys.messages
- Dowolna
RAISERROR
instrukcja wywoływana ze składniąWITH LOG
- Dowolny
sys.messages
błąd zmodyfikowany lub utworzony przy użyciu poleceniasp_altermessage
- Każde zdarzenie zarejestrowane przy użyciu polecenia
xp_logevent
Program SQL Server Management Studio zapewnia łatwy, graficzny sposób zarządzania całym systemem alertów i jest zalecanym sposobem konfigurowania infrastruktury alertów.
Jeśli alert nie działa prawidłowo, sprawdź, czy:
Usługa SQL Server Agent jest uruchomiona
Zdarzenie zostało wyświetlone w dzienniku aplikacji systemu Windows
Alert jest włączony
Zdarzenia generowane z
xp_logevent
wystąpieniemmaster
w bazie danych. W związku z tym nie wyzwala alertu,xp_logevent
chyba że @database_name dla alertu tomaster
lubNULL
.
Uprawnienia
Domyślnie tylko członkowie stałej roli serwera sysadmin mogą wykonywać polecenie sp_add_alert
.
Przykłady
Przykład 1 — dodawanie alertu dla zadania
W poniższym przykładzie dodamy alert (alert testowy), który uruchamia zadanie po wyzwoleniu Back up the AdventureWorks2022 Database
.
Uwaga
W tym przykładzie przyjęto założenie, że komunikat 55001 i Back up the AdventureWorks2022 Database
zadanie już istnieją. Przykład jest wyświetlany tylko w celach ilustracyjnych.
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
Przykład 2 — dodawanie alertu dla progu replikacji
Poniższy przykład dodaje alert informujący o przekroczeniu progu opóźnienia transakcji replikacji:
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