Udostępnij za pośrednictwem


Wykrywanie i rozwiązywania konfliktów w rekordach logicznych

W tym temacie omówiono różne kombinacje wykrywanie konfliktów i możliwych podejść rozdzielczość konflikt podczas używania rekordów logicznych.Występuje konflikt w replikacja scalająca, gdy więcej niż jeden węzeł zmiany samych danych lub replikacja scalająca napotka niektórych rodzajów błędów, takich jak naruszenie ograniczenia podczas replikowania zmian.Aby uzyskać więcej informacji dotyczących wykrywanie konfliktów i rozdzielczości, zobacz Zaawansowane wykrywanie konfliktów replikacji scalania i rozdzielczości.

Określenie poziom śledzenia i rozwiązywania konfliktów artykuł

Wykrywanie konfliktów

Sposób, w którym konflikty są wykrywane logiczne rekordów jest określana przez dwie właściwości artykuł: column_tracking and logical_record_level_conflict_detection.SQL Server 2005 and later versions also support logical record-level detection.Aby uzyskać więcej informacji na poziomie wiersza i kolumna-poziomu śledzenia Zobacz "Poziom śledzenia" sekcja Jak replikacji scalania wykrywa i usuwa konflikty.

Logical_record_level_conflict_detection artykuł właściwość zestaw wartość TRUE lub FALSE.Wartość powinna być tylko zestaw dla najwyższego poziom nadrzędnego artykułu i będą ignorowane przez podrzędność artykułów.Jeśli ta właściwość ma wartość FALSE, replikacja scalająca wykrywa konflikty, jak w poprzednich wersjach SQL Server, wyłącznie na podstawie wartości z column_tracking właściwości artykuł.Jeśli wartością tą jest PRAWDA, zignoruje replikacja scalająca column_tracking właściwość artykuł i wykrywa konflikt zmiany gdziekolwiek w rekord logiczny.Rozważmy na przykład tego scenariusza:

Rekord logiczny z trzema tabelami zawierający wartości

Wykryto konflikt dwóch użytkowników zmiany wartości rekord logiczny Customer2 w Klienci, zamówienia, lub OrderItems tabele.Ten przykład pociąga za sobą zmiany wprowadzone w instrukcja UPDATE, ale konflikt może być także wykryta przez zmiany dokonane w instrukcja INSERT lub DELETE.

Rozwiązywanie konfliktów

replikacja scalająca używa domyślnie na podstawie priorytetów logiki do rozwiązywania konfliktów.Jeżeli dokonano zmiany powodujące konflikt w dwóch subskrybenta baz danych, zmień subskrybenta WINS wyższy priorytet subskrypcja, lub jeśli priorytet jest taki sam, pierwsza zmiana do osiągnięcia Wydawca serwera wins.Z poziomu wiersza i kolumna-poziom wykrywania, cały wygrywający wiersz zawsze zastąpienie wiersz.

Logical_record_level_conflict_resolution artykuł właściwość zestaw wartość TRUE lub FALSE.Wartość powinna być tylko zestaw dla najwyższego poziom nadrzędnego artykułu i będą ignorowane przez podrzędność artykułów.Jeśli ma wartość TRUE, cały zwycięża rekord logiczny zastępuje przegrywająca rekord logiczny.Jeśli jest FAŁSZ, poszczególne wiersze wygrywającym mogą pochodzić z innych subskrybentów lub wydawców.Na przykład subskrybenta a wygraj konflikt w wierszu z zamówienia tabela i b subskrybent wygraj na powiązanych wierszy z OrderItems tabeli.Wynik jest rekord logiczny z zamówienia wiersz subskrybenta i OrderItems wiersz subskrybenta B.

Interakcja konfliktów i wykrywania ustawień

Wynik konflikty zależy od interakcji wykrywanie konfliktów i ustawienia rozdzielczości.Poniższe przykłady zakłada jest używana na podstawie priorytetów konfliktów.Podczas korzystania z logicznego rekordy są możliwości:

  • Wiersz lub kolumna poziom wykrywania rozdzielczość poziomu wiersza

  • Kolumna poziom wykrywania rozdzielczość rekord logiczny

  • Wykrywanie poziom wiersza rozdzielczość rekord logiczny

  • rekord logiczny wykrywania, rozdzielczość rekord logiczny

Wiersz lub kolumnę poziom wykrywania rozdzielczość poziomu wiersza

W tym przykładzie publikacja jest konfigurowane:

  • column_tracking ma wartość PRAWDA lub FAŁSZ

  • logical_record_level_conflict_detection ma wartość FAŁSZ

  • logical_record_level_conflict_resolution ma wartość FAŁSZ

przypadek wykrywania jest poziom wiersza lub kolumna i rozdzielczość jest poziom wiersza.Te ustawienia są używane do zalet posiadające wszystkie zmiany powtórzeniem rekord logiczny jako całość, ale bez rozdzielczości lub wykrywanie konfliktów poziom rekordu logiczne.

Wykrywanie poziomu kolumny logicznej rozdzielczość rekordu

W tym przykładzie publikacja jest konfigurowane:

  • column_tracking ma wartość PRAWDA

  • logical_record_level_conflict_detection ma wartość FAŁSZ

  • logical_record_level_conflict_resolution ma wartość PRAWDA

A Wydawca i subskrybenta rozpoczyna się ten sam zestaw danych, a rekord logiczny zdefiniowano między zamówienia i Klienci tabele.Wydawca zmienia custcol1 kolumna w Klienci tabela i ordercol1 w zamówienia tabela.Zmiany subskrybenta custcol1 w tym samym wierszu Klienci tabela i ordercol2 kolumna w tym samym wierszu zamówienia tabela.Zmiany do tej samej kolumna w klienta tabela powodują konflikt, ale zmiany zamówienia tabela nie są w konflikcie.

Ponieważ rozwiązane konflikty poziom rekordu logiczne, wygrywasz zmian w Wydawca zastąpić zmiany dokonane w tabelach subskrybenta podczas przetwarzania replikacja.

Seria tabel pokazująca zmiany w pokrewnych wierszach

Poziom wykrywania, logiczne rozdzielczość rekordu wiersza

W tym przykładzie publikacja jest konfigurowane:

  • column_tracking ma wartość FAŁSZ

  • logical_record_level_conflict_detection ma wartość FAŁSZ

  • logical_record_level_conflict_resolution ma wartość PRAWDA

A Wydawca i subskrybenta rozpoczyna się ten sam zestaw danych.Wydawca zmienia custcol1 kolumna w Klienci tabela.Zmiany subskrybenta custcol2 w Klienci tabela i ordercol2 kolumna w zamówienia tabela.Zmiany w tym samym wierszu w Klienci zmiany powodują konflikt, ale subskrybent tabela zamówienia tabela nie są w konflikcie.

Ponieważ rozwiązane konflikty poziom rekordu logicznych, podczas synchronizacji wygrywającym zmiany wprowadzone na Wydawca zastąpić zmiany dokonane w tabelach subskrybenta.

Seria tabel pokazująca zmiany w pokrewnych wierszach

Logiczne rekordu wykrywania, logiczne rezolucja rekordu

W tym przykładzie publikacja jest konfigurowane:

  • logical_record_level_conflict_detection ma wartość PRAWDA

  • logical_record_level_conflict_resolution ma wartość PRAWDA

A Wydawca i subskrybenta rozpoczyna się ten sam zestaw danych.Wydawca zmienia custcol1 kolumna w Klienci tabela.Zmiany subskrybenta ordercol1 kolumna w zamówienia tabela.Żadne zmiany nie zostały do tego samego wiersza lub kolumny, ale ponieważ zmiany są dokonywane w tym samym rekord logiczny dla IDklienta= 1, zmiany są wykrywane jako konflikt w rekord logiczny poziom.

Ponieważ konflikty są rozpoznawane również poziom rekordu logicznych, podczas synchronizacji wygrywającym zmiany dokonane na Wydawca zastępuje zmiany wprowadzone w tabelach subskrybenta.

Seria tabel pokazująca zmiany w pokrewnych wierszach