Dane na Wydawca i subskrybenta nie pasują.

Dane na Wydawca i subskrybenta jest uważany za nie pustki (innymi słowy danych nie pasuje) jeśli:

  • Istnieją różne liczby wierszy niż subskrybent w Wydawca, i publikacja nie jest filtrowany.Jeśli publikacja jest filtrowana, może oczekiwać, że różni się liczbę wierszy.

  • Dane w jeden lub więcej wierszy jest inny w zawartości Wydawca i abonenta.

Wyjaśnienie

Dane na Wydawca i subskrybenta mogą być inne niż pustki kilku powodów:

  • Dane są aktualizowane na subskrybent powinien być traktowany jako tylko do odczytu.baza danych subskrypcja Powinna być traktowana jako tylko do odczytu, chyba że używasz replikacja scalająca, replikacja transakcyjna z subskrypcjami aktualizowalną lub replikacja transakcyjna peer-to-peer.

  • Wyzwalacze są używane przez subskrybenta.Wyzwalacze można modyfikować dane przez subskrybenta i również uniemożliwić dane aktualizowane, jeśli wyzwalacz wystawia WYCOFYWANIA.

  • Skrypty są wykonywane przez replikacja przez subskrybenta, ale nie przez wydawcę.

  • Replikacja wykonanie procedura składowana transakcyjnych publikacja daje wyniki różnych przez subskrybenta.

  • Ograniczenie naruszenia lub inne problemy uniemożliwić wierszy wstawiane, aktualizowane lub usunięty przez subskrybenta.

Akcja użytkownika

Następujące akcje opisują sposób ustalić inne niż pustki dane i dostosowania go do zbieżności:

  1. Określić inne niż pustki za pomocą sprawdzania poprawności danych lub tablediff narzędzia:

    • Jeśli można uruchomić agenta dystrybucji lub scalić agenta określają, czy brak danych przez uruchomienie sprawdzania poprawności binarnej suma kontrolna.Można również użyć poprawności liczby wierszy, ale ta metoda nie wykazują różnic w zawartości danych.Aby uzyskać więcej informacji, zobacz Sprawdzanie poprawności replikowanych danych.

    • Jeśli nie można uruchomić agenta dystrybucji lub scalić agenta określić, czy dane inne niż pustki uruchamiając tablediff narzędzia.Aby uzyskać informacje dotyczące narzędzia na zreplikowanych tabelach, zobacz Jak Porównaj zreplikowanych tabelach różnic (Programowanie replikacji).

  2. Jeśli dane są inne niż pustki, można użyć tablediff narzędzie do generowania Transact-SQL skrypt, aby przenieść dane do zbieżności.Aby uzyskać więcej informacji, zobacz Narzędzie tablediff.

Adresowanie przyczyny braku zbieżności

Następujące akcje adres z przyczyn wymienionych w "Wyjaśnieniem" sekcja:

  • Dane są aktualizowane przez subskrybenta z zewnątrz replikacja:

    • Jeśli chcesz zezwolić użytkownikom na wstawianie, aktualizowanie i usuwanie danych subskrybent Użyj replikacja scalająca, replikacja transakcyjna z subskrypcjami aktualizowalną lub replikacja transakcyjna peer-to-peer.Aby uzyskać więcej informacji, zobacz Omówienie replikacji scalania i Typy publikacji dla replikacji transakcyjnej.

    • Jeśli chcesz uniemożliwić użytkownikom wstawianie, aktualizowanie i usuwanie danych przez subskrybenta Tworzenie wyzwalacza dla każdej tabela, która zawiera wyraz WYCOFYWANIA i używa opcji nie dla replikacja (która zapobiega wyzwalacz wyzwalania, gdy agent replikacja wykonuje operację).Na przykład:

      USE AdventureWorks2008R2;
      GO
      CREATE TRIGGER prevent_user_dml
      ON Person.Address
      FOR INSERT, UPDATE, DELETE
      NOT FOR REPLICATION
      AS
      ROLLBACK;
      

      Aby uzyskać więcej informacji, zobacz CREATE TRIGGER (Transact-SQL) i Kontrolowanie ograniczenia, tożsamości i wyzwalaczy z nie dla replikacji.

  • Wyzwalacze są używane przez subskrybenta.Wyzwalacze subskrybent muszą być właściwie zarządzane tak, aby nie powodować-do zbieżności lub inne problemy:

    • Wyzwalacze tylko powinien powodować zmian danych na subskrybenta, za pomocą replikacja scalająca, replikacja transakcyjna z subskrypcjami aktualizowalną lub replikacja transakcyjna peer-to-peer.Aby uzyskać więcej informacji, zobacz Omówienie replikacji scalania i Typy publikacji dla replikacji transakcyjnej.

    • W wielu przypadkach wyzwalaczy, należy użyć opcji nie dla replikacji.Należy rozważyć wyzwalacz, który wstawia dane do tabela śledzenia: gdy użytkownik wstawia wiersz pierwotnie jest odpowiednia dla wyzwalacza ognia i wprowadzić wiersz do tabela śledzenia, ale wyzwalacza należy nie ognia podczas replikacji danych do subskrybenta spowodowałoby niepotrzebne wiersz wstawiania w tabela śledzenia.

      Jeśli wyzwalacz zawiera WYCOFYWANIA instrukcja i wyzwalacz nie jest używana opcja nie dla replikacji, wiersze, które zostały zreplikowane abonent nie może być stosowane.

    • Dla replikacja transakcyjna, istnieją dodatkowe zagadnienia dotyczące ustawienie XACT_ABORT i za pomocą instrukcji i WYCOFYWANIA w wyzwalacza.Aby uzyskać więcej informacji zobacz sekcję "Wyzwalacze" sekcja Zagadnienia dotyczące replikacji transakcyjnej.

  • Skrypty są wykonywane przez replikacja przez subskrybenta, ale nie przez wydawcę.

    @ Pre_snapshot_script i @ post_snapshot_script parametry sp_addpublication i sp_addmergepublication pozwalają określić skrypty uruchamiania przed i po zastosowaniu migawka.Aby uzyskać więcej informacji, zobacz Wykonywanie skryptów przed i po zastosowaniu migawki.procedura składowana sp_addscriptexec pozwala na wykonać skryptu podczas procesu synchronizacji.Aby uzyskać więcej informacji, zobacz Jak Wykonywanie skryptów podczas synchronizacji (Programowanie replikacji Transact-SQL).

    Skrypty te są zwykle używane dla zadania administracyjne, takie jak dodawanie logowania przez subskrybenta.Jeśli skrypty są używane do aktualizowania danych w subskrybent powinien być traktowany jako tylko do odczytu, administrator musi zapewnić, że bez wywoływania zbieżności nie powoduje.

  • Replikacja wykonanie procedura składowana transakcyjnych publikacja daje wyniki różnych przez subskrybenta.

    Jeśli replikujesz wykonanie procedura składowana procedury definicji jest replikowany subskrybenta podczas inicjowania subskrypcja; gdy procedura jest wykonywana w Wydawca, odpowiednią procedurą subskrybent wykonuje replikacja.Aby uzyskać więcej informacji, zobacz Publikowanie wykonanie procedury przechowywanej w replikacji transakcyjnej.

    Jeżeli procedura składowana wykonuje inną akcja subskrybent lub działa na różnych danych niż w Wydawca, zbieżności nie może występować.Należy rozważyć procedurę, która wykonuje obliczenia, a następnie wstawia dane oparte na obliczeniach.Jeśli subskrybenta jest filtrowane obliczeń subskrybent opiera się na inne dane, wstawiony przez subskrybenta wynik może być odmienne lub Wstaw nie może występować we wszystkich.

  • Ograniczenie naruszenia lub inne problemy uniemożliwić wierszy wstawiane, aktualizowane lub usunięty przez subskrybenta.

    Dla replikacja transakcyjna, naruszenia ograniczenia są traktowane jako błędy; Domyślnie powodują agenta dystrybucji, aby zatrzymać synchronizację, jeżeli one wystąpią (informacji o pominięcie tych błędów, zobacz Pomijanie błędy replikacji transakcyjnej).Dla replikacja scalająca naruszeniach ograniczeń są traktowane jako konfliktów; są one rejestrowane, ale nie mogą powodować agenta scalanie, aby zatrzymać synchronizację.Dla obu typów replikacja ograniczenie naruszenia może prowadzić do innych niż zbieżności, insert, update lub usunięcia pomyślną w jeden węzeł nie powiodła się w innej.

    Po opublikowaniu tabela określić domyślne opcje schematu, że ograniczenia na klucz obcy i ograniczeń check powinny zostać utworzone w baza danych subskrypcja z nie dla replikacji zestawu opcji.Jeśli aplikacja wymaga innych ustawień dla ograniczenia, zmień opcje schematu.Aby uzyskać więcej informacji, zobacz Jak Określ opcje schematu (SQL Server Management Studio) i Jak Określ opcje schematu (Programowanie replikacji Transact-SQL).

Zobacz także

Koncepcje