Udostępnij za pośrednictwem


Weryfikowanie replikowanych danych

Dotyczy:programu SQL ServerAzure SQL Database

W tym temacie opisano sposób sprawdzania poprawności danych u subskrybenta w programie SQL Server przy użyciu SQL Server Management Studio, języka Transact-SQL lub obiektów zarządzania replikacją (RMO).

Replikacja transakcyjna i scalona umożliwiają sprawdzenie, czy dane u subskrybenta są zgodne z danymi u wydawcy. Walidację można wykonać dla określonych subskrypcji lub wszystkich subskrypcji publikacji. Określ jeden z następujących typów weryfikacji, a agent dystrybucji lub agent scalania zweryfikuje dane przy następnym uruchomieniu:

  • Tylko liczba wierszy. Sprawdza, czy tabela w subskrybentze ma taką samą liczbę wierszy jak tabela w wydawcy, ale nie sprawdza, czy zawartość wierszy jest zgodna. Walidacja liczby wierszy zapewnia uproszczone podejście do walidacji, które umożliwia informowanie o problemach z danymi.
  • liczba wierszy i binarna suma kontrolna. Oprócz zliczania wierszy przez Wydawcę i Odbiorcę, suma kontrolna wszystkich danych jest obliczana przy użyciu algorytmu sumy kontrolnej. Jeśli zliczanie wierszy zakończy się niepowodzeniem, suma kontrolna nie zostanie wykonana.

Oprócz weryfikacji zgodności danych między subskrybentem a wydawcą, replikacja scalana zapewnia możliwość sprawdzenia poprawności partycjonowania danych dla każdego subskrybenta. Aby uzyskać więcej informacji, zobacz Validate Partition Information for a Merge Subscriber.

Notatka

Azure SQL Managed Instance może być wydawcą, dystrybutorem i subskrybentem replikacji migawek i transakcji. Bazy danych w usłudze Azure SQL Database mogą być subskrybentami typu 'push' wyłącznie do replikacji migawkowej i transakcyjnej. Aby uzyskać więcej informacji, zobacz Replikacja transakcyjna z Azure SQL Database i Azure SQL Managed Instance.

Jak działa walidacja danych

Program SQL Server weryfikuje dane, obliczając liczbę wierszy lub sumę kontrolną w programie Publisher, a następnie porównując te wartości z liczbą wierszy lub sumą kontrolną obliczoną na subskrybenta. Jedna wartość jest obliczana dla całej tabeli publikacji, a jedna wartość dla całej tabeli subskrypcji, ale dane w kolumnach tekst, ntextlub obraz nie są uwzględniane w obliczeniach.

Podczas wykonywania obliczeń tymczasowo umieszczane są udziałowe blokady na tabelach, w których uruchamiane jest zliczanie wierszy lub sumy kontrolne, ale obliczenia są wykonywane szybko, a blokady udziałowe usuwane, zwykle w ciągu kilku sekund.

Gdy są używane sumy kontrolne binarne, sprawdzanie nadmiarowości 32-bitowej (CRC) odbywa się na podstawie kolumny, a nie CRC w fizycznym wierszu na stronie danych. Dzięki temu kolumny z tabelą będą znajdować się w dowolnej kolejności fizycznie na stronie danych, ale nadal są obliczane do tego samego CRC dla wiersza. Walidacja sumy kontrolnej binarnej może być używana w przypadku filtrów wierszy lub kolumn w publikacji.

Weryfikowanie danych jest procesem trzyczęściowym:

  1. Jedna subskrypcja lub wszystkie subskrypcje publikacji są oznaczone do weryfikacji. Oznacz subskrypcje do weryfikacji w oknach dialogowych Weryfikacja subskrypcji, Weryfikacja subskrypcjii Weryfikacja wszystkich subskrypcji, które są dostępne w folderze Publikacje lokalne oraz folderze Subskrypcje lokalne w programie Microsoft SQL Server Management Studio. Subskrypcje można również oznaczyć na karcie Wszystkie subskrypcje, karcie Listy obserwowanych subskrypcji oraz w węźle publikacji w Monitorze Replikacji. Aby uzyskać informacje na temat uruchamiania monitora replikacji, zobacz Uruchamianie monitora replikacji.

  2. Subskrypcja jest weryfikowana przy następnej synchronizacji przez agenta dystrybucji (na potrzeby replikacji transakcyjnej) lub agenta scalania (na potrzeby replikacji scalania). Agent dystrybucji zwykle jest uruchamiany w sposób ciągły, w takim przypadku walidacja odbywa się natychmiast; Agent scalania zwykle działa na żądanie, w takim przypadku walidacja następuje po uruchomieniu agenta.

  3. Wyświetl wyniki walidacji:

    • W oknach szczegółów w Monitorze replikacji: na karcie Historia dystrybutora do subskrybenta dla replikacji transakcyjnej i na karcie Historia synchronizacji dla replikacji scalającej.
    • W oknie dialogowym Wyświetl stan synchronizacji w Management Studio.

Zagadnienia i ograniczenia

Podczas walidacji danych należy wziąć pod uwagę następujące problemy:

  • Przed zweryfikowaniem danych należy zatrzymać wszystkie działania aktualizacji u subskrybentów (nie jest konieczne zatrzymanie działania u wydawcy w przypadku weryfikacji).
  • Ponieważ sumy kontrolne i sumy kontrolne binarne mogą wymagać dużych ilości zasobów procesora podczas walidacji dużego zestawu danych, należy zaplanować walidację w przypadku najmniejszej aktywności na serwerach używanych w replikacji.
  • Replikacja weryfikuje tylko tabele; nie sprawdza, czy artykuły zawierające tylko schemat (takie jak procedury składowane) są takie same u wydawcy i subskrybenta.
  • Suma kontrolna binarna może być używana z dowolną opublikowaną tabelą. Suma kontrolna nie może weryfikować tabel z filtrami kolumn lub strukturami tabel logicznych, w których przesunięcia kolumn różnią się (ze względu na instrukcje ALTER TABLE, które upuszczają lub dodają kolumny).
  • Walidacja replikacji wykorzystuje funkcje sumy kontrolnej oraz binary_checksum. Aby uzyskać informacje o ich zachowaniu, zobacz CHECKSUM (Transact-SQL) i BINARY_CHECKSUM (Transact-SQL).
  • Walidacja przy użyciu binarnej sumy kontrolnej lub innej sumy kontrolnej może niesłusznie zgłosić błąd, jeśli typy danych różnią się u subskrybenta niż u wydawcy. Taka sytuacja może wystąpić, jeśli wykonasz jedną z następujących czynności:
    • Jawne ustawianie opcji schematu w celu mapowania typów danych dla wcześniejszych wersji programu SQL Server.
    • Ustaw poziom zgodności publikacji dla publikacji seryjnej na starszą wersję programu SQL Server, a opublikowane tabele zawierają jeden lub więcej typów danych, które muszą być mapowane dla tej wersji.
    • Ręczne inicjowanie subskrypcji oraz używane są różne typy danych w subskrybencie.
  • Binarne sumy kontrolne i walidacje sumy kontrolnej nie są obsługiwane w przypadku subskrypcji, które można przekształcić na potrzeby replikacji transakcyjnej.
  • Walidacja nie jest obsługiwana w przypadku danych replikowanych do subskrybentów programu innych niż SQL Server.
  • Procedury monitora replikacji są przeznaczone tylko dla subskrypcji typu push, ponieważ nie można zsynchronizować subskrypcji typu pull w monitorze replikacji. Jednakże można oznaczyć subskrypcję na potrzeby walidacji i wyświetlić wyniki weryfikacji dla subskrypcji typu pull w Monitorze Replikacji.
  • Wyniki walidacji wskazują, czy weryfikacja zakończyła się powodzeniem, czy niepowodzeniem, ale nie określa, które wiersze zakończyły się niepowodzeniem, jeśli wystąpił błąd. Aby porównać dane w Publisher i Subscriber, użyj narzędzia tablediff. Aby uzyskać więcej informacji na temat używania tego narzędzia z replikowanymi danymi, sprawdź Compare Replicated Tables for Differences (Replikacja Programowanie).

Wyniki weryfikacji danych

Po zakończeniu walidacji agent dystrybucji lub agent scalania rejestruje komunikaty dotyczące powodzenia lub niepowodzenia (replikacja nie zgłasza, które wiersze zakończyły się niepowodzeniem). Te wiadomości można wyświetlić w programie SQL Server Management Studio, Monitorze Replikacji oraz tabelach systemu replikacji. W powyższym temacie z instrukcjami pokazano, jak uruchomić walidację i wyświetlić wyniki.

Aby obsłużyć błędy weryfikacji, rozważ następujące kwestie:

Artykuły w replikacji transakcyjnej

Korzystanie z programu SQL Server Management Studio

  1. Połącz się z programem Publisher w programie SQL Server Management Studio, a następnie rozwiń węzeł serwera.
  2. Rozwiń folder replikacji, a następnie rozwiń folder Publikacje lokalne.
  3. Kliknij prawym przyciskiem myszy publikację, dla której chcesz zweryfikować subskrypcje, a następnie kliknij Weryfikuj subskrypcje.
  4. W oknie dialogowym weryfikowanie subskrypcji wybierz subskrypcje do zweryfikowania:
    • Wybierz pozycję Zweryfikuj wszystkie subskrypcje programu SQL Server.
    • Wybierz pozycję Zweryfikuj następujące subskrypcje, a następnie wybierz co najmniej jedną subskrypcję.
  5. Aby określić typ weryfikacji do wykonania (liczba wierszy lub liczba wierszy i sumę kontrolną) kliknij Opcje weryfikacji, a następnie określ opcje w oknie dialogowym Opcje weryfikacji subskrypcji.
  6. Wybierz pozycję OK.
  7. Wyświetl wyniki weryfikacji w Monitorze replikacji lub w oknie dialogowym Wyświetl stan synchronizacji. Dla każdej subskrypcji:
    1. Rozwiń publikację, kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij Wyświetl stan synchronizacji.
    2. Jeśli agent nie jest uruchomiony, kliknij przycisk Uruchom w oknie dialogowym Wyświetl stan synchronizacji. W oknie dialogowym zostaną wyświetlone komunikaty informacyjne dotyczące walidacji.
      Jeśli nie widzisz żadnych komunikatów dotyczących walidacji, agent zarejestrował już kolejny komunikat. W takim przypadku wyświetl wyniki walidacji w monitorze replikacji. Aby uzyskać więcej informacji, zobacz procedury dotyczące używania Monitora replikacji w tym temacie.

Korzystanie z Transact-SQL

Wszystkie artykuły

  1. W programie Publisher w bazie danych publikacji wykonaj sp_publication_validation (Transact-SQL). Określ @publication i jedną z następujących wartości dla @rowcount_only:

    • 1 — sprawdzanie tylko liczby wierszy (ustawienie domyślne)
    • 2 — liczba wierszy i suma kontrolna binarna.

    Notatka

    Podczas wykonywania sp_publication_validation (Transact-SQL), dla każdego artykułu w publikacji wykonywana jest sp_article_validation (Transact-SQL). Aby pomyślnie wykonać sp_publication_validation (Transact-SQL), musisz mieć uprawnienia SELECT dla wszystkich kolumn w opublikowanych tabelach podstawowych.

  2. (Opcjonalnie) Uruchom agenta dystrybucji dla każdej subskrypcji, jeśli nie jest jeszcze uruchomiona. Aby uzyskać więcej informacji, zobacz Synchronizowanie subskrypcji ściągania i Synchronizowanie subskrypcji wypychanej.

  3. Sprawdź dane wyjściowe agenta pod kątem wyniku weryfikacji.

Pojedynczy artykuł

  1. W programie Publisher w bazie danych publikacji wykonaj sp_article_validation (Transact-SQL). Określ @publication, nazwę artykułu dla @articlei jedną z następujących wartości dla @rowcount_only:

    • 1 — sprawdzanie tylko liczby wierszy (ustawienie domyślne)
    • 2 — rowcount i binarna suma kontrolna.

    Notatka

    Aby pomyślnie wykonać sp_article_validation (Transact-SQL), musisz mieć uprawnienia SELECT dla wszystkich kolumn w opublikowanej tabeli bazowej.

  2. (Opcjonalnie) Uruchom agenta dystrybucji dla każdej subskrypcji, jeśli nie jest jeszcze uruchomiona. Aby uzyskać więcej informacji, zobacz Synchronizowanie subskrypcji pobierania i Synchronizowanie subskrypcji wypychania.

  3. Sprawdź dane wyjściowe agenta pod kątem wyniku weryfikacji.

Pojedynczy subskrybent

  1. W programie Publisher w bazie danych publikacji otwórz jawną transakcję przy użyciu BEGIN TRANSACTION (Transact-SQL).

  2. W programie Publisher w bazie danych publikacji wykonaj sp_marksubscriptionvalidation (Transact-SQL). Określ publikację dla @publication, nazwę subskrybenta dla @subscriberi nazwę bazy danych subskrypcji dla @destination_db.

  3. (Opcjonalnie) Powtórz krok 2 dla każdej zweryfikowanej subskrypcji.

  4. W programie Publisher w bazie danych publikacji wykonaj sp_article_validation (Transact-SQL). Określ @publication, nazwę artykułu dla @articlei jedną z następujących wartości dla @rowcount_only:

    • 1 — sprawdzanie tylko liczby wierszy (ustawienie domyślne)
    • 2 — liczba wierszy i binarne sumy kontrolnej.

    Notatka

    Aby pomyślnie wykonać sp_article_validation (Transact-SQL), musisz mieć uprawnienia SELECT dla wszystkich kolumn w opublikowanej tabeli bazowej.

  5. W Publisherze, w bazie danych publikacji, zatwierdź transakcję przy użyciu COMMIT TRANSACTION (Transact-SQL).

  6. (Opcjonalnie) Powtórz kroki od 1 do 5 dla każdego weryfikowanego artykułu.

  7. (Opcjonalnie) Uruchom agenta dystrybucji, jeśli nie jest jeszcze uruchomiony. Aby uzyskać więcej informacji, zobacz Synchronizowanie subskrypcji Pull i Synchronizowanie subskrypcji Push.

  8. Sprawdź dane wyjściowe agenta pod kątem wyniku weryfikacji. Aby uzyskać więcej informacji, zobacz Walidacja danych u subskrybenta.

Wszystkie subskrypcje push do publikacji transakcyjnej

Korzystanie z monitora replikacji

  1. W Menedżerze replikacji rozwiń grupę wydawcy w lewym panelu, a następnie rozwiń pozycję Wydawca.

  2. Kliknij prawym przyciskiem myszy publikację, dla której chcesz zweryfikować subskrypcje, a następnie kliknij Weryfikuj subskrypcje.

  3. W oknie dialogowym weryfikowanie subskrypcji wybierz subskrypcje do zweryfikowania:

    • Wybierz pozycję Zweryfikuj wszystkie subskrypcje programu SQL Server.
    • Wybierz pozycję Zweryfikuj następujące subskrypcje, a następnie wybierz co najmniej jedną subskrypcję.
  4. Aby określić typ weryfikacji do wykonania (liczba wierszy lub liczba wierszy i sumę kontrolną) kliknij Opcje weryfikacji, a następnie określ opcje w oknie dialogowym Opcje weryfikacji subskrypcji.

  5. Wybierz pozycję OK.

  6. Kliknij kartę Wszystkie subskrypcje.

  7. Wyświetl wyniki walidacji. Dla każdej subskrypcji push:

    1. Jeśli agent nie jest uruchomiony, kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij Rozpocznij synchronizowanie.
    2. Kliknij prawym przyciskiem myszy na subskrypcję i wybierz Wyświetl szczegóły.
    3. Wyświetl informacje na karcie Dystrybutor do historii subskrybenta na zakładce w obszarze tekstowym Akcje w wybranej sesji .

W przypadku pojedynczej subskrypcji do publikacji Merge

Korzystanie z programu SQL Server Management Studio

  1. Połącz się z programem Publisher w programie SQL Server Management Studio, a następnie rozwiń węzeł serwera.

  2. Rozwiń folder Replikacji, a następnie rozwiń folder Publikacje Lokalne.

  3. Rozwiń publikację, dla której chcesz zweryfikować subskrypcje, kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij sprawdź poprawność subskrypcji.

  4. W oknie dialogowym Weryfikacja subskrypcji wybierz Zweryfikuj tę subskrypcję.

  5. Aby określić typ weryfikacji (liczba wierszy lub liczba wierszy i suma kontrolna), kliknij przycisk Opcje, a następnie określ opcje w oknie dialogowym Opcje Weryfikacji Subskrypcji .

  6. Wybierz pozycję OK.

  7. Wyświetl wyniki walidacji w Monitorze replikacji lub w oknie dialogowym Wyświetl Stan Synchronizacji.

    1. Rozwiń publikację, kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij Wyświetl stan synchronizacji.
    2. Jeśli agent nie jest uruchomiony, kliknij przycisk Uruchom w oknie dialogowym Wyświetl stan synchronizacji. W oknie dialogowym zostaną wyświetlone komunikaty informacyjne dotyczące walidacji.

    Jeśli nie widzisz żadnych komunikatów dotyczących walidacji, agent zarejestrował już kolejny komunikat. W takim przypadku wyświetl wyniki walidacji w monitorze replikacji. Aby uzyskać więcej informacji, zobacz instrukcje dotyczące Monitorowania replikacji w tym temacie.

Dla wszystkich subskrypcji publikacji scalającej

Korzystanie z programu SQL Server Management Studio

  1. Połącz się z programem Publisher w programie SQL Server Management Studio, a następnie rozwiń węzeł serwera.

  2. Rozwiń folder Replikacja, a następnie rozwiń folder Publikacje lokalne.

  3. Kliknij prawym przyciskiem myszy publikację, dla której chcesz zweryfikować subskrypcje, a następnie kliknij zweryfikuj wszystkie subskrypcje.

  4. W oknie dialogowym Zweryfikuj wszystkie subskrypcje określ typ weryfikacji do wykonania (liczba wierszy lub liczba wierszy i suma kontrolna).

  5. Wybierz pozycję OK.

  6. Wyświetl wyniki walidacji w Monitorze replikacji lub skorzystaj z okna dialogowego Stan synchronizacji. Dla każdej subskrypcji:

    1. Rozwiń publikację, kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij Wyświetl stan synchronizacji.
    2. Jeśli agent nie jest uruchomiony, kliknij przycisk Uruchom w oknie dialogowym Wyświetl stan synchronizacji. W oknie dialogowym zostaną wyświetlone komunikaty informacyjne dotyczące walidacji.

    Jeśli nie widzisz żadnych komunikatów dotyczących walidacji, agent zarejestrował już kolejny komunikat. W takim przypadku wyświetl wyniki walidacji w monitorze replikacji. Aby uzyskać więcej informacji, zobacz procedury korzystania z Monitora replikacji opisane w tym temacie.

W przypadku pojedynczej subskrypcji wypychania do publikacji typu Merge

Korzystanie z monitora replikacji

  1. W obszarze Monitor replikacji rozwiń grupę Wydawca w okienku po lewej stronie, rozwiń pozycję Wydawca, a następnie kliknij publikację.
  2. Kliknij kartę Wszystkie subskrypcje.
  3. Kliknij prawym przyciskiem myszy subskrypcję, którą chcesz zweryfikować, a następnie kliknij zweryfikuj subskrypcję.
  4. W oknie dialogowym Weryfikowanie subskrypcji wybierz pozycję Zweryfikuj tę subskrypcję.
  5. Aby określić typ weryfikacji, którą chcesz wykonać (liczba wierszy lub liczba wierszy i suma kontrolna), kliknij przycisk Opcje, a następnie wybierz opcje w oknie dialogowym Opcje weryfikacji subskrypcji.
  6. Wybierz pozycję OK.
  7. Kliknij kartę Wszystkie subskrypcje.
  8. Wyświetl wyniki weryfikacji:
    1. Jeśli agent nie jest uruchomiony, kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij Rozpocznij synchronizowanie.
    2. Kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij pozycję Wyświetl szczegóły.
    3. Wyświetl informacje na karcie Historia synchronizacji w obszarze tekstowym Ostatni komunikat wybranej sesji.

Korzystanie z Transact-SQL

  1. W programie Publisher w bazie danych publikacji wykonaj sp_validatemergesubscription (Transact-SQL). Określ @publication, nazwę subskrybenta dla @subscriber, nazwę bazy danych subskrypcji dla @subscriber_dbi jedną z następujących wartości dla @level:

    • 1 — sprawdzenie tylko licznika wierszy.
    • 3 — weryfikacja binarnej sumy kontrolnej rowcount.

    Oznacza to wybraną subskrypcję do weryfikacji.

  2. Uruchom agenta scalania dla każdej subskrypcji. Aby uzyskać więcej informacji, zobacz Synchronizowanie subskrypcji ściągania i Synchronizowanie subskrypcji wypychanej.

  3. Sprawdź dane wyjściowe agenta pod kątem wyniku weryfikacji.

  4. Powtórz kroki od 1 do 3 dla każdej zweryfikowanej subskrypcji.

Notatka

Subskrypcję publikacji scalającej można również zweryfikować na końcu synchronizacji, określając parametr -Validate podczas uruchamiania agenta Merge Replication .

Dla wszystkich subskrypcji typu 'push' do Publikacji scalonej

Korzystanie z monitora replikacji

  1. W Monitorze replikacji rozwiń grupę wydawcy w okienku po lewej stronie, a następnie rozwiń pozycję wydawcy.
  2. Kliknij prawym przyciskiem myszy publikację, dla której chcesz zweryfikować subskrypcje, a następnie kliknij zweryfikuj wszystkie subskrypcje.
  3. W oknie dialogowym Zweryfikuj wszystkie subskrypcje określ typ weryfikacji do wykonania (liczba wierszy lub liczba wierszy i suma kontrolna).
  4. Wybierz pozycję OK.
  5. Kliknij kartę Wszystkie subskrypcje.
  6. Wyświetl wyniki walidacji. Dla każdej subskrypcji wypychania:
    1. Jeśli agent nie jest uruchomiony, kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij Rozpocznij synchronizowanie.
    2. Kliknij prawym przyciskiem myszy subskrypcję, a następnie kliknij pozycję Wyświetl szczegóły.
    3. Wyświetl informacje w obszarze tekstowym Ostatni komunikat wybranej sesji na karcie Historia synchronizacji.

Korzystanie z Transact-SQL

  1. W programie Publisher w bazie danych publikacji wykonaj sp_validatemergepublication (Transact-SQL). Określ @publication i jedną z następujących wartości dla @level:

    • 1 — weryfikacja tylko liczby wierszy.
    • 3 — weryfikacja binarnej sumy kontrolnej dla liczby wierszy.

    Zaznacza wszystkie subskrypcje do weryfikacji.

  2. Uruchom agenta scalania dla każdej subskrypcji. Aby uzyskać więcej informacji, zobacz Synchronizowanie subskrypcji ściągania i Synchronizowanie subskrypcji wypychanej.

  3. Sprawdź dane wyjściowe agenta pod kątem wyniku weryfikacji. Aby uzyskać więcej informacji, zobacz Walidacja danych u subskrybenta.

Weryfikowanie danych przy użyciu parametrów agenta scalania

  1. Uruchom agenta scalania na subskrybenta (ściągnięcie subskrypcji) lub w dystrybutorze (subskrypcja wypychana) z wiersza polecenia w jeden z następujących sposobów.

    • Określanie wartości 1 (liczba wierszy) lub 3 (liczba wierszy i suma kontrolna binarna) dla parametru -Validate.
    • Określanie weryfikacji liczby wierszy lub weryfikacji sumy kontrolnej dla parametru -ProfileName.

    Aby uzyskać więcej informacji, zobacz Synchronizowanie subskrypcji ściągania lub Synchronizowanie subskrypcji wypychanej.

Korzystanie z obiektów zarządzania replikacją (RMO)

Replikacja umożliwia programowe weryfikowanie, czy dane w subskrybentze są zgodne z danymi w wydawcy za pomocą obiektów zarządzania replikacją (RMO). Używane obiekty zależą od typu topologii replikacji. Replikacja transakcyjna wymaga weryfikacji wszystkich subskrypcji publikacji.

Notatka

Aby zapoznać się z przykładem Example (RMO), zobacz dalszą część tej sekcji.

Aby zweryfikować dane dla wszystkich artykułów w publikacji transakcyjnej

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

  2. Utwórz wystąpienie klasy TransPublication. Ustaw właściwości Name i DatabaseName dla publikacji. Ustaw właściwość ConnectionContext na połączenie utworzone w kroku 1.

  3. Wywołaj metodę LoadProperties, aby uzyskać pozostałe właściwości obiektu. Jeśli ta metoda zwraca false, właściwości publikacji w kroku 2 zostały niepoprawnie zdefiniowane lub publikacja nie istnieje.

  4. Wywołaj metodę ValidatePublication. Przekaż następujące informacje:

    Oznacza to artykuły na potrzeby walidacji.

  5. Jeśli jeszcze nie uruchomiono, uruchom agenta dystrybucji, aby zsynchronizować każdą subskrypcję. Aby uzyskać więcej informacji, zobacz Synchronizuj subskrypcję wypychającą lub Synchronizuj subskrypcję ściąganą. Wynik operacji walidacji jest zapisywany w historii agenta. Aby uzyskać więcej informacji, proszę zapoznać się z Monitorowanie replikacji.

Aby zweryfikować dane we wszystkich subskrypcjach w publikacji scalanej

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

  2. Utwórz wystąpienie klasy MergePublication. Ustaw właściwości Name i DatabaseName dla publikacji. Ustaw właściwość ConnectionContext na połączenie utworzone w kroku 1.

  3. Wywołaj metodę LoadProperties, aby uzyskać pozostałe właściwości obiektu. Jeśli ta metoda zwraca false, właściwości publikacji w kroku 2 zostały niepoprawnie zdefiniowane lub publikacja nie istnieje.

  4. Wywołaj metodę ValidatePublication. Przekaż żądany ValidationOption.

  5. Uruchom agenta konsolidacji dla każdej subskrypcji, aby rozpocząć walidację, lub poczekaj na kolejne zaplanowane uruchomienie agenta. Aby uzyskać więcej informacji, zobacz Synchronizuj subskrypcję ściągania oraz Synchronizuj subskrypcję wypychania. Wynik operacji walidacji jest zapisywany w historii agenta, którą można wyświetlić za pomocą monitora replikacji. Aby uzyskać więcej informacji, patrz Monitorowanie replikacji.

Aby zweryfikować dane w jednej subskrypcji w publikacji scalanej

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

  2. Utwórz wystąpienie klasy MergePublication. Ustaw właściwości Name i DatabaseName dla publikacji. Ustaw właściwość ConnectionContext na połączenie utworzone w kroku 1.

  3. Wywołaj metodę LoadProperties, aby uzyskać pozostałe właściwości obiektu. Jeśli ta metoda zwraca false, właściwości publikacji w kroku 2 zostały niepoprawnie zdefiniowane lub publikacja nie istnieje.

  4. Wywołaj metodę ValidateSubscription. Przekaż nazwę subskrybenta i bazy danych subskrypcji, które są weryfikowane, oraz żądanej wartości ValidationOption.

  5. Uruchom agenta scalania dla subskrypcji, aby rozpocząć walidację, lub poczekaj na następne zaplanowane uruchomienie agenta. Aby uzyskać więcej informacji, zobacz Synchronizowanie subskrypcji pobierania i synchronizowanie subskrypcji wypychanej. Wynik operacji walidacji jest zapisywany w historii agenta, którą można przejrzeć, korzystając z Monitora Replikacji. Aby uzyskać więcej informacji, zobacz Monitorowanie replikacji.

Przykład (RMO)

W tym przykładzie wszystkie subskrypcje są oznaczane dla publikacji transakcyjnej w celu weryfikacji liczby wierszy.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";

TransPublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new TransPublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    // If we can't get the properties for this publication, 
    // throw an application exception.
    if (publication.LoadProperties())
    {
        // Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly,
            ValidationMethod.ConditionalFast, false);

        // If not already running, start the Distribution Agent at each 
        // Subscriber to synchronize and validate the subscriptions.
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(
        "Subscription validation could not be initiated.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"

Dim publication As TransPublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then

        ' Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly, _
         ValidationMethod.ConditionalFast, False)

        ' If not already running, start the Distribution Agent at each 
        ' Subscriber to synchronize and validate the subscriptions.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
     "Subscription validation could not be initiated.", ex)
Finally
    conn.Disconnect()
End Try

W tym przykładzie oznacza określoną subskrypcję publikacji scalanej w celu walidacji liczby wierszy.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";

MergePublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new MergePublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;


    // If we can't get the properties for this merge publication, then throw an application exception.
    if (publication.LoadProperties())
    {
        // Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName,
            subscriptionDbName, ValidationOption.RowCountOnly);
        
        // Start the Merge Agent to synchronize and validate the subscription.
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(String.Format(
        "The subscription at {0} to the {1} publication could not " +
        "be validated.", subscriberName, publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName, _
         subscriptionDbName, ValidationOption.RowCountOnly)

        ' Start the Merge Agent to synchronize and validate the subscription.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException(String.Format( _
     "The subscription at {0} to the {1} publication could not " + _
     "be validated.", subscriberName, publicationName), ex)
Finally
    conn.Disconnect()
End Try

Zobacz też

najlepsze rozwiązania dotyczące administrowania replikacją