Udostępnij za pośrednictwem


sp_add_alert (Transact-SQL)

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 0alert 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 sendlub 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 E-mail
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

LIKETransact-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 polecenia sp_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ąpieniem master w bazie danych. W związku z tym nie wyzwala alertu, xp_logevent chyba że @database_name dla alertu to master lub NULL.

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