Udostępnij przez


Korzystaj z alertów dotyczących zdarzeń agenta replikacji

Dotyczy:SQL Server

Program SQL Server Management Studio i program Microsoft SQL Server Agent umożliwiają monitorowanie zdarzeń, takich jak zdarzenia agenta replikacji, przy użyciu alertów. Program SQL Server Agent monitoruje dziennik aplikacji systemu Windows pod kątem zdarzeń skojarzonych z alertami. Jeśli wystąpi takie zdarzenie, SQL Server Agent odpowiada automatycznie, wykonując zdefiniowane przez Ciebie zadanie i/lub wysyłając wiadomość e-mail lub wiadomość na pager do określonego operatora. Program SQL Server zawiera zestaw wstępnie zdefiniowanych alertów dla agentów replikacji, które można skonfigurować do wykonywania zadania i/lub powiadamiania operatora. Aby uzyskać więcej informacji na temat definiowania zadania do wykonania, zobacz Automatyzowanie odpowiedzi na alert.

Po skonfigurowaniu komputera jako dystrybutora są instalowane następujące alerty:

Identyfikator komunikatu Wstępnie zdefiniowany alert Warunek powodujący aktywację alertu Wprowadza dodatkowe informacje w msdb..sysreplicationalerts
14150 Replikacja: sukces agenta Agent został pomyślnie zamknięty. Tak
14151 Replikacja: błąd agenta Agent zamyka się z powodu błędu. Tak
14152 Replikacja: ponawianie próby agenta Agent zostaje zamknięty po nieudanym ponowieniu próby wykonania operacji (agent napotka błąd, taki jak niedostępny serwer, zakleszczenie, niepowodzenie połączenia lub niepowodzenie przekroczenia limitu czasu). Tak
14157 Replikacja: wygasła subskrypcja została usunięta Wygasła subskrypcja została anulowana. Nie.
20572 Replikacja: subskrypcja została ponownie zainicjowana po niepowodzeniu walidacji Zadanie reakcji "Reinitialize subscriptions on data validation failure" reinitializuje subskrypcję z powodzeniem. Nie.
20574 Replikacja: Sprawdzanie poprawności danych przez subskrybenta nie powiodło się Sprawdzanie poprawności danych przez agenta dystrybucji lub scalania kończy się niepowodzeniem. Tak
20575 Replikacja: subskrybent przeszedł walidację danych Agent dystrybucji lub scalania przechodzi walidację danych. Tak
20578 Replikacja: niestandardowe wyłączanie agenta Gdy walidacja danych jest wywoływana za pomocą sp_publication_validation i @shutdown_agent ustawiony na 1, agent dystrybucji zostanie zamknięty po zakończeniu walidacji. Tak
22815 Alert o wykryciu konfliktu P2P Agent dystrybucji wykrył konflikt podczas próby zastosowania zmiany w węźle równorzędnym. Tak

Oprócz tych alertów monitor replikacji udostępnia zestaw ostrzeżeń i alertów związanych ze stanem i wydajnością. Aby uzyskać więcej informacji, zobacz Ustawianie progów i ostrzeżeń w monitorze replikacji. Można również zdefiniować alerty dla innych zdarzeń replikacji przy użyciu infrastruktury alertów programu SQL Server. Aby uzyskać więcej informacji, zobacz Tworzenie zdarzenia definiowanego przez użytkownika.

Aby skonfigurować wstępnie zdefiniowane alerty replikacji

Wyświetlanie dziennika aplikacji bezpośrednio

Aby wyświetlić dziennik aplikacji systemu Windows, użyj Podglądu zdarzeń systemu Microsoft Windows. Dziennik aplikacji zawiera komunikaty o błędach programu SQL Server oraz komunikaty dla wielu innych działań na komputerze. W przeciwieństwie do dziennika błędów programu SQL Server nowy dziennik aplikacji nie jest tworzony za każdym razem, gdy uruchamiasz program SQL Server (każda sesja programu SQL Server zapisuje nowe zdarzenia w istniejącym dzienniku aplikacji); można jednak określić czas przechowywania zarejestrowanych zdarzeń. Po wyświetleniu dziennika aplikacji systemu Windows można filtrować dziennik pod kątem określonych zdarzeń. Aby uzyskać więcej informacji, zobacz dokumentację systemu Windows.

Automatyzowanie odpowiedzi na alert

Replikacja zapewnia zadanie odpowiedzi dla subskrypcji, które kończą się niepowodzeniem weryfikacji danych, a także zapewnia platformę do tworzenia dodatkowych automatycznych odpowiedzi na alerty. Zadanie odpowiedzi jest zatytułowane Reinitialize subscriptions on data validation failure and is stored in the SQL Server Agent Jobs folder in SQL Server Management Studio (Ponowne inicjowanie subskrypcji w przypadku niepowodzenia walidacji danych i jest przechowywane w folderze Zadania agenta programu SQL Server w programie SQL Server Management Studio). Aby uzyskać informacje na temat włączania tego zadania odpowiedzi, zobacz Konfigurowanie wstępnie zdefiniowanych alertów replikacji (SQL Server Management Studio). Jeśli walidacja artykułów w publikacji transakcyjnej zakończy się niepowodzeniem, zadanie odpowiedzi ponownie inicjuje tylko te artykuły, które zakończyły się niepowodzeniem. Jeśli sprawdzanie poprawności artykułów w publikacji scalanej zakończy się niepowodzeniem, zadanie odpowiedzi ponownie inicjuje wszystkie artykuły w publikacji.

Struktura automatyzowania odpowiedzi

Zazwyczaj, gdy wystąpi alert, jedyne informacje, które masz do zrozumienia, co spowodowało alert i jakie działania należy podjąć, znajdują się w samym komunikacie alertowym. Analizowanie tych informacji może być podatne na błędy i czasochłonne. Replikacja ułatwia automatyzację odpowiedzi, udostępniając dodatkowe informacje o alercie w sysreplicationalerts tabeli systemowej. Podane informacje są już analizowane w postaci łatwo używanej przez niestandardowe programy.

Jeśli na przykład dane w tabeli Sales.SalesOrderHeader u Subskrybenta A nie przejdą walidacji, program SQL Server może wyzwolić komunikat 20574, powiadamiając o tym błędzie. Otrzymany komunikat będzie następujący: „Subskrybent 'A', subskrypcja artykułu 'SalesOrderHeader' w publikacji 'MyPublication' nie przeszło walidacji danych.”

Jeśli tworzysz odpowiedź na podstawie komunikatu, musisz ręcznie przeanalizować nazwę subskrybenta, nazwę artykułu, nazwę publikacji i błąd z komunikatu. Jednak ponieważ agent dystrybucji i agent scalania zapisują te same informacje do tabeli sysreplicationalerts (wraz ze szczegółami, takimi jak typ agenta, czas alertu, baza danych publikacji, baza danych subskrybentów i typ publikacji), zadanie odbierania może bezpośrednio wykonać zapytanie dotyczące odpowiednich informacji z tej tabeli. Mimo że dokładny wiersz nie może być skojarzony z określonym wystąpieniem alertu, tabela zawiera kolumnę status, która może służyć do śledzenia wpisów serwisowych. Wpisy w tej tabeli są zachowywane dla okresu przechowywania historii.

Jeśli na przykład utworzysz zadanie odpowiedzi w Transact-SQL, które obsługuje komunikat alertu o identyfikatorze 20574, możesz użyć następującej logiki:

declare @publisher sysname, @publisher_db sysname, @publication sysname, @publication_type int, @article sysname, @subscriber sysname, @subscriber_db sysname, @alert_id int  
declare hc cursor local for select publisher, publisher_db, publication, publication_type, article, subscriber,   
  subscriber_db, alert_id from   
  msdb..sysreplicationalerts where  
  alert_error_code = 20574 and status = 0  
  for read only  
open hc  
fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
while (@@fetch_status <> -1)  
begin  
/* Do custom work  */  
/* Update status to 1, which means the alert has been serviced. This prevents subsequent runs of this job from doing this again */  
update msdb..sysreplicationalerts set status = 1 where alert_id = @alert_id  
 fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id  
end  
close hc  
deallocate hc