Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Konflikty w replikacji merge są rozwiązywane na podstawie resolvera określonego dla każdego artykułu. Domyślnie konflikty są rozwiązywane bez potrzeby interwencji użytkownika. Jednak konflikty można oglądać, a wynik rozwiązania zmieniać w Microsoft Replication Conflict Viewer.
Dane o konfliktach są dostępne w narzędziu Replication Conflict Viewer przez okres określony dla okresu przechowywania konfliktów (domyślnie 14 dni). Aby ustalić okres utrzymania konfliktu, należy jednak:
Określ wartość retencyjną parametru
@conflict_retentionsp_addmergepublication (Transact-SQL).Określ wartość conflict_retention dla
@propertyparametru oraz wartość retencyjną dla@valueparametru sp_changemergepublication (Transact-SQL).
Domyślnie informacje o konflikcie są przechowywane:
- Jeśli poziom zgodności publikacji wynosi 90RTM lub wyższy, u wydawcy i subskrybenta.
- W programie Publisher, jeśli poziom zgodności publikacji jest niższy niż 80RTM.
- W programie Publisher, jeśli subskrybenci korzystają z programu SQL Server Compact. Nie można przechowywać danych konfliktów w subskrybentach programu SQL Server Compact.
Przechowywanie informacji o konfliktach jest sterowane przez właściwość publikacji conflict_logging. Więcej informacji można znaleźć w sp_addmergepublication (Transact-SQL) oraz sp_changemergepublication (Transact-SQL).
Konflikty można również rozwiązywać interaktywnie podczas synchronizacji za pomocą Microsoft Interactive Resolver. Funkcja Interactive Resolver jest dostępna w Menedżerze synchronizacji systemu Microsoft Windows. Aby uzyskać więcej informacji, zobacz Synchronizowanie subskrypcji przy użyciu programu Windows Synchronization Manager (Windows Synchronization Manager).
Rozwiązywanie konfliktów
Połącz się z Publisher (lub Subscriber, jeśli to odpowiednie) w Microsoft SQL Server Management Studio, a następnie rozwiń węzeł serwera.
Rozwiń folder Replikacja , a następnie rozwiń folder Publikacje lokalne .
Kliknij prawym przyciskiem myszy publikację, dla której chcesz wyświetlić konflikty, a następnie kliknij pozycję Wyświetl konflikty.
Note
Jeśli określiłeś wartość 'subscriber' dla właściwości conflict_logging , opcja menu View Conflicts nie jest dostępna. Aby zobaczyć konflikty, zacznij ConflictViewer.exe od wiersza poleceń. Domyślnie ConflictViewer.exe znajduje się w następującym katalogu: Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE. Aby uzyskać listę ważnych parametrów startowych, uruchom ConflictViewer.exe -?.
W oknie dialogowym Wybieranie tabeli konfliktów wybierz bazę danych, publikację i tabelę, dla której mają być wyświetlane konflikty.
W podglądzie konfliktów replikacji można wykonywać następujące czynności:
Filtruj wiersze za pomocą przycisków po prawej stronie górnej siatki.
Wybierz wiersz w górnej siatce, aby wyświetlić informacje o tym wierszu w dolnej siatce.
Wybierz jeden lub więcej wierszy w górnej siatce, a następnie kliknij Usuń, co jest równoważne kliknięciu przycisku Wyślij Zwycięzcę (bez żadnych zmian w danych).
Kliknij przycisk właściwości (...), aby wyświetlić więcej informacji na temat kolumny zaangażowanej w konflikt.
Edytuj dane w kolumnie Zwycięzca konfliktu lub Przegrany konfliktu przed ich przesłaniem (dane są dostępne tylko do odczytu, jeśli kolumna jest szara).
Kliknij Zatwierdź zwycięzcę, aby zaakceptować wiersz oznaczony jako zwycięzca konfliktu.
Kliknij Submit Loser, aby nadpisać rozwiązanie i przekazać wartość oznaczoną jako przegrany konfliktu do wszystkich węzłów w topologii.
Wybierz pozycję Zarejestruj szczegóły tego konfliktu , aby rejestrować dane powodujące konflikt do pliku. Aby określić lokalizację pliku, wskaż menu Widok , a następnie kliknij pozycję Opcje. Wprowadź wartość lub kliknij przycisk przeglądania (...), a następnie przejdź do odpowiedniego pliku. Kliknij przycisk OK , aby zamknąć okno dialogowe Opcje .
Zamknij podgląd konfliktów replikacji.
Wyświetlanie informacji o konflikcie
Gdy konflikt jest rozwiązywany w replikacji scalania, dane z przegranego wiersza są zapisywane do tabeli konfliktów. Dane konfliktowe można oglądać programowo za pomocą procedur przechowywanych w replikacji. Aby uzyskać więcej informacji, zobacz Zaawansowane wykrywanie i rozwiązywanie konfliktów replikacji scalania.
Na serwerze publikującym, w bazie danych publikacji, wykonaj sp_helpmergepublication. Zwróć uwagę na wartości następujących kolumn w zbiorze wyników:
centralized_conflicts - 1 oznacza, że wiersze konfliktu są przechowywane na Publisher, a 0 oznacza, że wiersze konfliktu nie są przechowywane na Publisher.
decentralized_conflicts - 1 oznacza, że wiersze konfliktowe są przechowywane u Subskrybenta, a 0 wskazuje, że wiersze konfliktu nie są przechowywane u Subskrybenta.
Note
Zachowanie rejestrowania konfliktów w publikacji scalającej jest ustawiane za pomocą parametru
@conflict_loggingprocedury sp_addmergepublication. Użycie tego@centralized_conflictsparametru zostało wycofane.
Poniższa tabela opisuje wartości tych kolumn na podstawie wartości określonej dla
@conflict_logging.@conflict_logging wartość centralized_conflicts zdecentralizowane_konflikty wydawca 1 0 subskrybent 0 1 Oba 1 1 U Wydawcy w bazie danych publikacji lub u Subskrybenta w bazie danych subskrypcji wykonaj sp_helpmergearticleconflicts. Określ wartość parametru
@publication, aby zwracać tylko informacje o konfliktach dotyczące artykułów należących do określonej publikacji. To zwraca informacje z tabeli konfliktów dla artykułów zawierających konflikty. Zwróć uwagę na wartość conflict_table dla wszelkich interesujących artykułów. Jeśli wartość conflict_table dla artykułu jest równa NULL, w danym artykule wystąpiły tylko konflikty związane z usunięciem.(Opcjonalnie) Przejrzyj spory konfliktowe pod kątem interesujących artykułów. W zależności od wartości centralized_conflicts i decentralized_conflicts z kroku 1, wykonaj jedno z następujących kroków:
U wydawcy, w bazie danych publikacji, wykonaj sp_helpmergeconflictrows. Określ tabelę konfliktową dla artykułu (od kroku 1) dla
@conflict_table. (Opcjonalnie) Określ wartość@publication, aby ograniczyć zwracane informacje o konfliktach do określonej publikacji. Zwraca dane wiersza oraz inne informacje dotyczące przegranego wiersza.Na stronie Subskrybera w bazie subskrypcji wykonaj sp_helpmergeconflictrows. Określ tabelę konfliktów dla artykułu z kroku 1 dla
@conflict_table. Zwraca to dane wiersza oraz inne informacje dotyczące wiersza, który przegrał.
Konflikt, w którym usunięcie się nie powiodło
Na serwerze publikującym, w bazie danych publikacji, wykonaj sp_helpmergepublication. Zwróć uwagę na wartości następujących kolumn w zbiorze wyników:
centralized_conflicts - 1 oznacza, że wiersze konfliktu są przechowywane na Publisher, a 0 oznacza, że wiersze konfliktu nie są przechowywane na Publisher.
decentralized_conflicts - 1 oznacza, że wiersze konfliktowe są przechowywane u Subskrybenta, a 0 wskazuje, że wiersze konfliktu nie są przechowywane u Subskrybenta.
Note
Zachowanie logowania konfliktów w publikacji merge jest ustawiane przy użyciu parametru
@conflict_loggingsp_addmergepublication. Użycie tego@centralized_conflictsparametru zostało wycofane.
U Wydawcy w bazie danych publikacji lub u Subskrybenta w bazie danych subskrypcji wykonaj sp_helpmergearticleconflicts. Określ wartość dla parametru
@publication, aby zwracać informacje z tabeli konfliktów tylko dla tych artykułów, które należą do określonej publikacji. To zwraca informacje z tabeli konfliktów dla artykułów zawierających konflikty. Zwróć uwagę na wartość source_object dla wszelkich interesujących artykułów. Jeśli wartość conflict_table dla artykułu jest równa NULL, w danym artykule wystąpiły tylko konflikty związane z usunięciem.(Opcjonalnie) Przeglądaj informacje o konflikcie pod kątem konfliktów usuwania. W zależności od wartości centralized_conflicts i decentralized_conflicts z kroku 1, wykonaj jedno z następujących kroków:
Na Publisher w bazie publikacji wykonaj sp_helpmergedeleteconflictrows. Określ nazwę tabeli źródłowej (z kroku 1), na której wystąpił konflikt dla
@source_object. (Opcjonalnie) Określ wartość@publication, aby ograniczyć zwracane informacje o konfliktach do określonej publikacji. To zwraca informacje o konflikcie usuwania przechowywane u Wydawcy.W sekcji Subskrybent w bazie subskrypcji wykonaj sp_helpmergedeleteconflictrows. Określ nazwę tabeli źródłowej (z kroku 1), na której wystąpił konflikt dla
@source_object. (Opcjonalnie) Określ wartość@publication, aby ograniczyć zwracane informacje o konfliktach do określonej publikacji. To zwraca informacje o konfliktach związanych z usuwaniem przechowywane u Subskrybenta.