Programowo monitoruj replikację

Dotyczy:SQL ServerAzure SQL Managed Instance

Monitor replikacji to narzędzie graficzne, które pozwala monitorować topologię replikacji. Możesz programowo uzyskać dostęp do tych samych danych monitorowania, korzystając z procedur składowanych replikacji języka Transact-SQL lub obiektów zarządzania replikacją (RMO). Te obiekty pozwalają programować następujące zadania:

  • Monitoruj stan wydawców, publikacji i subskrypcji.

  • Monitoruj sesje Merge Agent na jednym lub kilku subskrybentach.

  • Monitoruj polecenia transakcyjne oczekujące na wdrożenie u jednego lub więcej Subskrybentów.

  • Określ progowe metryki decydujące o tym, kiedy publikacja wymaga interwencji.

  • Monitoruj status tokenów śledzących.

Transact-SQL

Monitorować wydawców, publikacje i subskrypcje u dystrybutora

  1. Na dystrybutorze w bazie dystrybucji wykonaj sp_replmonitorhelppublisher. To zwraca informacje monitorowania dla wszystkich Wydawców korzystających z tego Dystrybutora. Aby ograniczyć zestaw wyników do jednego Publisher, podaj @publisher.

  2. Na serwerze Dystrybutora, w bazie danych dystrybucji, wykonaj sp_replmonitorhelppublication. Zwraca informacje o monitorowaniu dla wszystkich publikacji korzystających z tego Dystrybutora. Aby ograniczyć zestaw wyników do jednego wydawcy, publikacji lub opublikowanej bazy danych, należy określić odpowiednio @publisher, @publication lub @publisher_db.

  3. Na dystrybutorze w bazie dystrybucji wykonaj sp_replmonitorhelpsubscription. Zwraca ona informacje monitorujące wszystkie subskrypcje korzystające z tego dystrybutora. Aby ograniczyć zestaw wyników do subskrypcji należących do jednego wydawcy, jednej publikacji lub jednej opublikowanej bazy danych, należy określić odpowiednio @publisher, @publication lub @publisher_db.

Monitorowanie poleceń transakcyjnych oczekujących na wdrożenie u abonenta

  1. Na serwerze Dystrybutora, w bazie danych dystrybucji, wykonaj sp_replmonitorsubscriptionpendingcmds. To zwraca informacje o monitorowaniu wszystkich poleceń oczekujących na wykonanie dla wszystkich subskrypcji korzystających z tego Dystrybutora. Aby ograniczyć zestaw wyników do poleceń oczekujących dla subskrypcji należących do jednego wydawcy, subskrybenta, publikacji lub publikowanej bazy danych, określ odpowiednio @publisher, @subscriber, @publication lub @publisher_db.

Monitorować zmiany związane ze scalaniem oczekujące na przesłanie lub pobranie

  1. Na serwerze Publisher w bazie danych publikacji wykonaj sp_showpendingchanges. Zwraca to zestaw wyników pokazujący informacje o zmianach, które czekają na replikację dla Subskrybentów. Aby ograniczyć zestaw wyników do zmian dotyczących pojedynczej publikacji lub artykułu, określ odpowiednio @publication lub @article.

  2. Na poziomie Subskrybera w bazie subskrypcji wykonaj sp_showpendingchanges. Zwraca zestaw wyników zawierający informacje o zmianach oczekujących na replikację do Publikatora. Aby ograniczyć zestaw wyników do zmian dotyczących pojedynczej publikacji lub artykułu, określ odpowiednio @publication lub @article.

Monitorowanie sesji Merge Agent

  1. Na dystrybutorze w bazie dystrybucji wykonaj sp_replmonitorhelpmergesession. Zwraca ona informacje monitorujące, w tym Session_id, dotyczące wszystkich Merge Agent sesji wszystkich subskrypcji korzystających z tego Dystrybutora. Możesz też uzyskać wartość Session_id, wykonując zapytanie do tabeli systemowej MSmerge_sessions.

  2. W programie Dystrybutor, w bazie danych dystrybucyjnej, wykonaj sp_replmonitorhelpmergesessiondetail. Określ wartość Session_id z kroku 1 dla @session_id. Wyświetla szczegółowe informacje z monitora dotyczące sesji.

  3. Powtarzaj krok 2 dla każdej interesującej Cię sesji.

Monitorowanie sesji Merge Agent pod kątem pobierania subskrypcji od Subskrybenta

  1. Na serwerze Subskrybenta, w bazie danych subskrypcji, wykonaj sp_replmonitorhelpmergesession. Dla danej subskrypcji należy określić @publisher, @publication oraz nazwę bazy danych publikacji dla @publisher_db. To zwraca dane monitorujące z ostatnich pięciu sesji Merge Agent w ramach tej subskrypcji. Zwróć uwagę na wartość Session_id dla sesji interesujących w zbiorze wyników.

  2. Na stronie Subskrybera w bazie subskrypcji wykonaj sp_replmonitorhelpmergesessiondetail. Określ wartość Session_id z kroku 1 dla @session_id. Wyświetla on szczegółowe informacje monitorujące sesję.

  3. Powtarzaj krok 2 dla każdej interesującej Cię sesji.

Przeglądanie i modyfikowanie progowych metryk monitorowania publikacji

  1. Na serwerze Dystrybutora, w bazie danych dystrybucji, wykonaj sp_replmonitorhelppublicationthresholds. Zwraca to progi monitoringu ustawione dla wszystkich publikacji korzystających z tego Dystrybutora. Aby ograniczyć zestaw wyników do progów monitora dla publikacji należących odpowiednio do jednego Wydawcy, jednej opublikowanej bazy danych lub jednej publikacji, określ @publisher, @publisher_db lub @publication. Zwróć uwagę na wartość Metric_id dla wszelkich progów, które muszą zostać zmienione. Aby uzyskać więcej informacji, zobacz Ustawianie progów i ostrzeżeń w monitorze replikacji.

  2. Na serwerze Dystrybutora, w bazie danych dystrybucji, wykonaj sp_replmonitorchangepublicationthreshold. W razie potrzeby określ następujące kwestie:

    • Wartość Metric_id uzyskana w kroku 1 dla @metric_id.

    • Nowa wartość metryki progowej monitora dla @value.

    • Wartość 1 dla parametru @shouldalert oznacza, że po osiągnięciu tego progu zostanie zarejestrowany alarm, lub wartość 0, jeśli alarm nie jest potrzebny.

    • Wartość 1 dla @mode do włączenia metryki progowej monitora lub wartość 2 do jej wyłączenia.

Obiekty zarządzania replikacją (RMO)

Aby monitorować subskrypcję publikacji scalanej u subskrybenta

  1. Utwórz połączenie z subskrybentem przy użyciu ServerConnection klasy .

  2. Utwórz instancję klasy MergeSubscriberMonitor i ustaw właściwości Publisher, Publication, PublisherDB i SubscriberDB dla subskrypcji, a następnie ustaw właściwość ConnectionContext na wartość ServerConnection utworzoną w kroku 1.

  3. Zadzwoń do jednej z następujących metod, aby zwrócić informacje o sesjach Merge Agent w ramach tej subskrypcji:

    • GetSessionsSummary- zwraca tablicę obiektów MergeSessionSummary z informacjami o maksymalnie pięciu ostatnich sesjach Merge Agent. Zanotuj wartość SessionId dla interesujących Cię sesji.

    • GetSessionsSummary - zwraca tablicę obiektów MergeSessionSummary, zawierających informacje o sesjach agenta Merge Agent, które miały miejsce w ciągu ostatniej liczby godzin określonej przez parametr hours (maksymalnie pięć ostatnich sesji). Zanotuj wartość SessionId dla wszelkich interesujących Cię sesji.

    • GetLastSessionSummary- zwraca MergeSessionSummary obiekt z informacjami o ostatniej sesji Merge Agent. Zwróć uwagę na wartość SessionId dla tej sesji.

    • GetSessionsSummaryDataSet- zwraca DataSet obiekt z informacjami o maksymalnie pięciu ostatnich sesjach Merge Agent, po jednej w każdym wierszu. Zwróć uwagę na wartość kolumny Session_id dla wszystkich interesujących sesji.

    • GetLastSessionSummaryDataRow- zwraca DataRow obiekt z informacjami o ostatniej sesji Merge Agent. Zwróć uwagę na wartość kolumny Session_id dla tej sesji.

  4. (Opcjonalnie) Wywołaj odświeżenie danych dla obiektu przekazanego MergeSessionSummary jako mss lub wywołaj RefreshSessionSummaryRefreshSessionSummary odświeżenie danych w obiekcie przekazanym DataRow jako drRefresh.

  5. Korzystając z identyfikatora sesji uzyskanego w kroku 3, wywołaj jedną z następujących metod, aby zwrócić informacje o szczegółach konkretnej sesji:

Monitorowanie właściwości replikacji dla wszystkich publikacji w dystrybutorze

  1. Utwórz połączenie z dystrybutorem przy użyciu klasy ServerConnection.

  2. Utwórz wystąpienie klasy ReplicationMonitor.

  3. Ustaw właściwość ConnectionContext na utworzoną ServerConnection w kroku 1.

  4. Wywołaj metodę LoadProperties, aby uzyskać właściwości obiektu.

  5. Wykonaj jedną lub więcej z poniższych metod, aby zwrócić informacje o replikacji dla wszystkich wydawców korzystających z tego dystrybutora.

Monitorować właściwości publikacji dla określonego wydawcy u dystrybutora

  1. Utwórz połączenie z dystrybutorem przy użyciu klasy ServerConnection.

  2. Uzyskaj PublisherMonitor obiekt na jeden z tych sposobów.

  3. Wykonaj jedną lub więcej z poniższych metod, aby uzyskać informacje o replikacji dla wszystkich publikacji należących do tego Publikatora.

Monitorowanie właściwości dla konkretnej publikacji u Dystrybutora

  1. Utwórz połączenie z dystrybutorem przy użyciu klasy ServerConnection.

  2. Uzyskaj PublicationMonitor obiekt na jeden z tych sposobów.

  3. Wykonaj jeden lub więcej z poniższych metod, aby zwrócić informacje o tej publikacji.

Monitorowanie poleceń transakcyjnych czekających na wdrożenie u abonenta

  1. Utwórz połączenie z dystrybutorem przy użyciu klasy ServerConnection.

  2. Uzyskaj PublicationMonitor obiekt na jeden z tych sposobów.

  3. Wykonaj metodę TransPendingCommandInfo , która zwraca obiekt PendingCommandInfo .

  4. Użyj właściwości tego PendingCommandInfo obiektu, aby określić szacowaną liczbę oczekujących poleceń oraz czas potrzebny na ich zakończenie.

Aby ustawić progi ostrzegawcze monitorowania dla publikacji

  1. Utwórz połączenie z dystrybutorem przy użyciu klasy ServerConnection.

  2. Uzyskaj PublicationMonitor obiekt na jeden z tych sposobów.

  3. Wykonaj metodę EnumMonitorThresholds . Zwróć uwagę na aktualne ustawienia progu w zwróconej ArrayList liczbie MonitorThreshold obiektów.

  4. Wykonaj metodę ChangeMonitorThreshold . Przekaż następujące parametry:

    • metricIDInt32 wartość reprezentująca metrykę progową monitorowania z poniższej tabeli:

      Value Description
      1 Wygaśnięcie – monitoruje zbliżające się wygaśnięcie subskrypcji publikacji transakcyjnych.
      2 Opóźnienie – monitoruje wydajność subskrypcji publikacji transakcyjnych.
      4 MergeExpiration – monitoruje nieuchronny wygaśnięcie subskrypcji w celu łączenia publikacji.
      5 mergeslowrunduration – monitoruje czas trwania synchronizacji merge na połączeniach o niskiej przepustowości (dialup).
      6 mergefastrunduration – monitoruje czas trwania synchronizacji scalania w połączeniach o dużej przepustowości (LAN).
      7 mergefastrunspeed – monitoruje tempo synchronizacji scalającej w przypadku połączeń o dużej przepustowości (LAN).
      8 mergeslowrunspeed – monitoruje szybkość synchronizacji podczas synchronizacji scalania w przypadku połączeń o niskiej przepustowości (dial-up).
    • włączone - Boolean wartość wskazująca, czy metryka jest włączona dla publikacji.

    • thresholdValue – wartość całkowita ustalająca próg.

    • shouldAlert – liczba całkowita wskazująca, czy ten próg powinien generować alert.