Udostępnij za pośrednictwem


Aktualizowalna subskrypcji dla replikacji transakcyjnej

Ostrzeżenie

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

Replikacji transakcyjnej obsługuje aktualizacje na subskrybentów za pośrednictwem subskrypcji aktualizowalna i replikacja równorzędna.Oto dwa rodzaje subskrypcji aktualizowalna:

  • Natychmiastowej aktualizacji.Wydawca i subskrybenta muszą być połączone do aktualizacji danych przez subskrybenta.

  • Aktualizowanie w kolejce Wydawca i subskrybenta ma być podłączony do aktualizacji danych przez subskrybenta.Aktualizacje mogą być dokonywane podczas subskrybenta lub Wydawca jest w trybie offline.

Podczas aktualizacji danych na subskrybenta najpierw jest propagowana na Wydawca i następnie propagowane do innych subskrybentów.Jeśli używana jest natychmiastowej aktualizacji, zmiany są propagowane bezpośrednio za pomocą zatwierdzanie dwufazowe protokół.Jeśli używana jest aktualizowanie kolejce, zmiany są przechowywane w kolejce; transakcje w kolejce są następnie asynchronicznie stosowane w Wydawca zawsze, gdy połączenie sieciowe jest dostępne.Ponieważ aktualizacje są propagowane do asynchronicznie Wydawca, te same dane zostały zaktualizowane przez Wydawca lub innego subskrybenta i konfliktów może wystąpić podczas stosowania aktualizacji.Konflikty są wykrywane i rozwiązywane zgodnie z zasadą rozwiązywania konfliktów jest zestaw podczas tworzenia publikacja.

Po utworzeniu publikacja transakcyjnych z aktualizowalna subskrypcje w Kreatorze nowej publikacja zarówno natychmiastowej aktualizacji i aktualizacji w kolejce są włączone.Tworzenie publikacja z procedur przechowywanych, można włączyć jedną lub obie opcje.Podczas tworzenia subskrypcja do publikacja, można określić tryb aktualizacji, które umożliwia.Następnie można przełączać tryby aktualizacji, w razie potrzeby.Aby uzyskać więcej informacji zobacz następującą sekcję "Przełączanie między aktualizacji tryby".

Aby włączyć aktualizowalna subskrypcje transakcyjnych publikacji

Utworzyć subskrypcji aktualizowalna transakcyjnych publikacji

Przełączanie między trybami aktualizacji

Podczas używania aktualizowalna subskrypcje można określić, że subskrypcja powinny używać trybu aktualizacji, a następnie przejdź do drugiej, jeśli aplikacja wymaga.Na przykład można określić, że subskrypcja należy używać natychmiastowej aktualizacji, ale w przypadku przełączenie w kolejce aktualizacji, jeśli awaria systemu wyniki utraty łączności sieciowej.

Ostrzeżenie

Replikacja nie automatyczne przełączanie między trybami aktualizacji.Należy zestaw tryb aktualizacji za pośrednictwem SQL Server Management Studio lub aplikacja musi wywołać sp_setreplfailovermode (języka Transact-SQL) do przełączania między trybami.

Przełączenie z natychmiastowej aktualizacji w kolejce aktualizacji nie można przełączyć się do natychmiastowej aktualizacji, dopóki subskrybenta i Wydawca są połączone i agenta czytnik kolejki zostało zastosowane wszystkie wiadomości oczekujące w kolejce do wydawcy.

Do przełączania między trybami aktualizacji

Aby przełączać tryby aktualizacji, należy włączyć publikacja i subskrypcja dla obu aktualizowanie trybów, a następnie przełączać się między nimi w razie potrzeby.

Zagadnienia dotyczące korzystania z subskrypcjami aktualizowalna

Uwagi ogólne

  • Updating subscriptions are supported for Subscribers running Microsoft SQL Server 2000 SP3 and later versions.

  • Po włączeniu publikacja aktualizacji subskrypcji lub kolejce subskrypcje aktualizacji nie można wyłączyć opcję publikacja, (chociaż subskrypcji nie trzeba używać go).Aby wyłączyć opcję, trzeba usunąć publikacja i utworzony zostanie nowy plik.

  • Ponowne publikowanie danych nie jest obsługiwany.

  • Dodaje replikacji msrepl_tran_version kolumna do opublikowanych tabel na potrzeby śledzenia.Z powodu tej dodatkowej kolumna wszystkich instrukcji INSERT powinien zawierać lista kolumn.

  • Zmiany schematu tabela w publikacja, który obsługuje subskrypcje aktualizacji, muszą być zatrzymane wszystkie działania w tabela na Wydawca i subskrybentami i danych do czasu zmiany musi propagowane do wszystkich węzłów przed wprowadzeniem jakichkolwiek zmian schematu.Gwarantuje to, że zaległe transakcje nie kolidują z schemat oczekujące zmiany.Po zmiany schematu są propagowane do wszystkich węzłów, opublikowanych tabel można wznowić działania.Aby uzyskać więcej informacji, zobacz Jak Quiesce topologii replikacji (Programowanie replikacji Transact-SQL).

  • Planowane do przełączania między trybami update Agent czytnik kolejki należy uruchomić co najmniej raz po subskrypcja została zainicjowana (domyślnie uruchamia kolejki czytnik agenta nieustannie).

  • Jeśli baza danych subskrybenta jest podzielony na partycje poziomo i istnieją wiersze w partycji, które istnieje przez subskrybenta, ale nie na Wydawca, subskrybent nie może zaktualizować istniejące wiersze.Próba aktualizacji tych wierszy zwraca błąd.Wiersze powinny być usunięte z tabela i następnie dodaje na Wydawca.

Aktualizacje subskrybent

  • Aktualizacje subskrybent są propagowane do Wydawca nawet jeśli subskrypcja wygasła lub jest nieaktywny.Upewnij się, że takie subskrypcje są opuszczane lub ponownie zainicjowany.

  • Jeśli używane są kolumny sygnatury czasowej lub tożsamości i replikowane są jako ich typy danych podstawowych, wartości w tych kolumnach, nie powinny być aktualizowane przez subskrybenta.

  • Subskrybenci nie można zaktualizować ani wstawić tekstu, ntext lub obrazu wartości, ponieważ nie można odczytać z tabel wstawionych lub usuniętych wewnątrz wyzwalacze replikacja śledzenia zmian.Podobnie, abonentów nie można zaktualizować ani wstawić text lub image wartości używając WRITETEXT lub UPDATETEXT, ponieważ dane są zastępowane przez Wydawca.Zamiast tego można podzielić tekstu i obrazu kolumn w oddzielne tabela i modyfikowania tabel w obrębie transakcji.

    Aby zaktualizować dużych obiektów na subskrybenta, użyj typów danych varchar(max), nvarchar(max), varbinary(max) zamiast tekstu, ntext, i obrazu typy danych, odpowiednio.

  • Aktualizuje unikatowe klucze (łącznie z kluczy podstawowych), które generują duplikaty (na przykład aktualizacji formularza aktualizacji <kolumna> USTAWIĆ <kolumna> =<kolumna>+ 1 są niedozwolone i zostaną odrzucone z powodu przekroczenia unikatowości.Wynika to zestaw aktualizacje dokonane przez subskrybenta są propagowane przez replikacja jako pojedyncze instrukcje aktualizacji dla każdego wiersza, dotyczy.

  • Jeśli baza danych subskrybenta jest podzielony na partycje poziomo i istnieją wiersze w partycji, które istnieje przez subskrybenta, ale nie na Wydawca, subskrybent nie może zaktualizować istniejące wiersze.Próba aktualizacji tych wierszy zwraca błąd.Wiersze powinny usunięte z tabela i ponownie wstawiony.

Zdefiniowany przez użytkownika wyzwalaczy

  • Jeśli aplikacja wymaga wyzwalaczy subskrybent, wyzwalacze powinna być zdefiniowana z opcji nie dla replikacji w Wydawca i abonenta.Aby uzyskać więcej informacji na temat tej opcji, zobacz Kontrolowanie ograniczenia, tożsamości i wyzwalaczy z nie dla replikacji.Gwarantuje to, że wyzwalacze ognia tylko w przypadku zmiany oryginalnych danych, ale nie jest replikowany po zmienić.

  • Zapewnienia wyzwalacza zdefiniowane przez użytkownika nie jest wyzwalana, gdy wyzwalacz replikacja aktualizuje tabela.Można to osiągnąć poprzez wywołanie procedury sp_check_for_sync_trigger w treści wyzwalacza zdefiniowane przez użytkownika.Aby uzyskać więcej informacji, zobacz sp_check_for_sync_trigger (języka Transact-SQL).

Natychmiastowej aktualizacji

  • Natychmiastowe aktualizowanie subskrypcji, zmiany przez subskrybenta są propagowane do Wydawca i stosowane przy użyciu Microsoft Distributed Transaction Coordinator (MS DTC).Upewnij się, że usługa MS DTC jest instalowany i konfigurowany na Wydawca i abonenta.Aby uzyskać więcej informacji zobacz dokumentację systemu Windows.

  • Wyzwalacze, używany przez natychmiastowe subskrypcje aktualizacji wymaga połączenia do Wydawca do replikowania zmian.Aby uzyskać informacje dotyczące zabezpieczania tego połączenia, zobacz Uwagi dotyczące subskrypcji aktualizacji zabezpieczeń.

  • Jeśli publikacja umożliwia natychmiastowe subskrypcje aktualizacji i artykuł w publikacji ma filtr kolumn, nie można odfiltrować-nullable kolumn bez ustawienia domyślne.

Aktualizowanie w kolejce

  • Tabele uwzględnione w publikacja seryjnej nie może również publikowane jako kolejkowanej część transakcyjnych publikacja, który umożliwia aktualizowanie subskrypcji.

  • Aktualizacje wprowadzone do kolumny klucza podstawowego nie jest zalecane, gdy za pomocą kolejce aktualizacji, ponieważ klucz podstawowy jest używany jako lokalizatora rekordu dla wszystkich kwerend.Gdy zasad rozwiązywania konfliktów jest zestaw subskrybenta Wins, aktualizacji kluczy podstawowych należy dokonać z ostrożnością.Jeżeli aktualizacje klucz podstawowego są wykonywane w obu Wydawca i subskrybenta, wynik będzie dwa wiersze klucze podstawowe.

  • W przypadku kolumny danych typu SQL_VARIANT: Podczas wstawiony lub zaktualizowany przez subskrybenta danych jest mapowany w następujący sposób przez agenta czytnik kolejki podczas kopiowania z subskrybenta do kolejki:

    • BIGINT, DECIMAL, NUMERIC, MONEY, and SMALLMONEY are mapped to NUMERIC.

    • BINARYi VARBINARY są mapowane na VARBINARY danych.

Wykrywanie konfliktów i rozdzielczości

  • Dla subskrybenta Wins sprzeczności zasad: Rozwiązywanie konfliktów nie jest obsługiwana dla aktualizacji klucz podstawowy kolumny.

  • Konflikty, ze względu na ograniczenie na klucz obcy błędy nie są rozpoznawane przez replikacja:

    • Jeśli nie oczekuje się konfliktów i danych również jest podzielony na partycje (abonentów nie Aktualizuj samych wierszy), można użyć ograniczenia na klucz obcy Wydawca i abonentów.

    • Jeżeli oczekuje konflikty: nie należy używać ograniczeń klucz obcy w Wydawca lub abonenta, jeśli używasz "Subskrybent wins" Rozwiązywanie konfliktów; nie należy używać ograniczeń klucz obcy subskrybent użycia "Wydawca wins" Rozwiązywanie konfliktów.