Udostępnij za pośrednictwem


Można aktualizować subskrypcji dla transakcji replikacja

Uwaga

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

replikacja transakcyjnej obsługują aktualizacje na subskrybenci subskrypcji mogą być aktualizowane i replikacja równorzędna.Poniżej przedstawiono dwa rodzaje subskrypcji mogą być aktualizowane:

  • Natychmiastowe aktualizowanie.Wydawca i subskrybent muszą być połączone do aktualizowania danych przez subskrybent.

  • Kolejce aktualizowania Wydawca i subskrybent nie muszą być podłączone do aktualizacji danych przez subskrybent.Aktualizacje mogą być dokonywane podczas subskrybent lub Wydawca jest w trybie offline.

Po zaktualizowaniu danych w subskrybent jest najpierw te będą propagowane do Wydawca, następnie przenoszone do innych subskrybent.Jeśli używany jest natychmiast zaktualizować, zmiany są propagowane bezpośrednio za pomocą protokół zatwierdzanie dwufazowe.Jeśli używany jest aktualizowanie kolejce, zmiany są przechowywane w kolejce; kolejce transakcje są następnie stosowane asynchronicznie na Wydawca za każdym razem, gdy połączenie sieciowe jest dostępne.Ponieważ te aktualizacje są propagowane asynchronicznie Wydawca, te same dane mogły zostać zaktualizowane przez wydawcę lub innego subskrybent i po zastosowaniu aktualizacji może wystąpić konflikt.Konflikty są wykrywane i rozwiązywane zgodnie z zasadami rozwiązania konfliktu, który jest zestaw podczas tworzenia publikacja.

Po utworzeniu publikacja transakcyjnych z subskrypcji mogą być aktualizowane w Kreatora nowej publikacja zarówno natychmiastowej aktualizacji i aktualizacji w kolejce są włączone.Po utworzeniu publikacja z procedur przechowywanych, można włączyć jedną lub obie opcje.Podczas tworzenia subskrypcja do publikacja, można określić za pomocą który tryb aktualizacji.Następnie można przełączyć między trybem aktualizacji w razie potrzeby.Aby uzyskać więcej informacji zobacz sekcję "" Przełączanie między Update tryby".

Aby włączyć subskrypcji mogą być aktualizowane dla transakcyjnych publikacji

Aby utworzyć subskrypcji mogą być aktualizowane dla transakcyjnych publikacji

Przełączanie między tryby aktualizacji

Podczas korzystania z subskrypcja mogą być aktualizowane można określić, że subskrypcja powinny używać jednego tryb aktualizacji, a następnie przełącz się do drugiej Jeśli aplikacja wymaga.Na przykład można określić, że subskrypcja należy używać natychmiastowej aktualizacji, ale przełączenie w kolejce aktualizacji w przypadku awarii systemu powoduje utratę łączności sieciowej.

Uwaga

Replikacja nie automatycznie przełączanie między trybami aktualizacji.Musisz zestaw tryb aktualizacji za pośrednictwem SQL Server Management Studio lub musi wywoływać aplikacji sp_setreplfailovermode (Transact-SQL) do przełączania między trybami.

Po przełączeniu się z natychmiastowe aktualizowanie w celu aktualizowania w kolejce, można przełączyć się do natychmiastowej aktualizacji, dopóki Agent Reader kolejki zostało zastosowane wszystkie wiadomości oczekujące w kolejce do wydawcę i subskrybent i Wydawca są połączone.

Do przełączania między trybami aktualizacji

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

Uwagi dotyczące związanych z korzystaniem z aktualizowalną subskrypcji

Zagadnienia ogólne

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

  • Po włączeniu publikacja w celu zaktualizowania subskrypcji lub kolejce subskrypcje aktualizacji nie można wyłączyć opcję dla publikacja, (chociaż subskrypcji nie ma potrzeby korzystania z niego).Aby wyłączyć tę opcję, należy usunąć publikacja i utworzyć nową.

  • Ponowne publikowanie danych nie jest obsługiwana.

  • Dodaje replikacja msrepl_tran_version kolumna do opublikowanych tabel na potrzeby śledzenia.Ze względu na to dodatkowe kolumna wszystkie instrukcje INSERT powinny zawierać lista kolumn.

  • Zmiany schematu tabela w publikacja, która obsługuje aktualizowanie subskrypcji, muszą być zatrzymane wszystkie operacje wykonywane na tej tabela Wydawca i subskrybentów i danych do czasu zmiany muszą być propagowane do wszystkich węzłów przed wprowadzeniem jakichkolwiek zmian schematu.Pozwala to uzyskać pewność, że zaległe transakcje nie są w konflikcie z zmiany oczekujące schematu.Po zmiany schematu są propagowane do wszystkich węzłów, opublikowanych tabel może wznowić działania.Aby uzyskać więcej informacji zobacz How to: Quiesce a Replication Topology (Replication Transact-SQL Programming).

  • Jeśli planowane jest przełączanie między trybami aktualizacji, Agent Reader kolejki musi uruchomić co najmniej raz po subskrypcja została zainicjowana (domyślnie Kolejka agenta Czytelnik jest uruchamiana stale).

  • Jeśli baza danych subskrybenta jest podzielony na partycje poziomo i wierszy na partycji, istniejące przez subskrybenta, ale nie na Wydawca, kiedy użytkownik nie może zaktualizować istniejących wierszy.Próba aktualizacji tych wierszy zwraca błąd.Wiersze powinny być usuwane z tabela i następnie dodaje na Wydawca.

Aktualizacje przez subskrybent

  • Aktualizacje przez subskrybent jest przekazywana do Wydawca, nawet jeśli subskrypcja wygasła lub jest nieaktywny.Upewnij się, że te subskrypcje są usunięte lub ustawienie ponownie inicjowane.

  • Jeśli używane są kolumny sygnatury czasowej lub IDENTITY i replikowane jako ich typy danych podstawowych, wartości w tych kolumnach nie powinny zostać uaktualnione przez subskrybent.

  • Subskrybenci nie można zaktualizować lub wstawić tekst, ntext or obraz wartości, ponieważ nie można odczytać danych z tabel wstawionych lub usuniętych wewnątrz wyzwalacze replikacja śledzenia zmian.Podobnie subskrybenci nie można zaktualizować lub wstawić text lub image wartości za pomocą WRITETEXT lub UPDATETEXT, ponieważ dane są zastępowane przez Wydawca. Zamiast tego można można podzielić na partycje tekst and obraz kolumn na oddzielne tabela i modyfikowanie tabel w ramach transakcji.

    Aby zaktualizować dużych obiektów na subskrybent, należy użyć typu danych varchar(max), nvarchar(max), varbinary(max) zamiast tekst, ntext, and obraz typy danych, odpowiednio.

  • Aktualizacje unikatowych kluczy (w tym kluczy podstawowych), które generują duplikaty (na przykład aktualizacja w postaci UPDATE <kolumna> SET <kolumna> =<kolumna>+1) nie są dozwolone i zostaną odrzucone z powodu naruszenia unikatowości.Jest to spowodowane tym, że ustawione aktualizacje wykonywane na subskrybencie są propagowane przez replikację jako pojedyncze instrukcje UPDATE na każdym wierszu, który tego wymaga.

  • Jeśli baza danych subskrybenta jest podzielony na partycje poziomo i wierszy na partycji, istniejące przez subskrybenta, ale nie z Wydawca, kiedy użytkownik nie może zaktualizować istniejące wiersze.Próba aktualizacji tych wierszy zwraca błąd.Wiersze powinny być usuwane z tabela i ponownie wstawiony.

Zdefiniowany przez użytkownika wyzwalaczy

  • Jeśli aplikacja wymaga wyzwalacze przez subskrybent, wyzwalacze, należy określić z opcją nie do replikacja Wydawca i subskrybent.Aby uzyskać więcej informacji na temat tej opcji zobacz Kontrolowanie ograniczenia tożsamości i wyzwalaczy z nie dla replikacja. Daje to pewność, że wyzwalacze ognia tylko w przypadku zmiany oryginalnych danych, ale nie jest replikowane podczas zmiany.

  • Upewnij się, że wyzwalacz zdefiniowanej przez użytkownika nie ognia, gdy wyzwalacz replikacja aktualizuje tabela.Można to osiągnąć przez wywołanie procedury sp_check_for_sync_trigger w treści wyzwalacza zdefiniowanej przez użytkownika.Aby uzyskać więcej informacji zobacz sp_check_for_sync_trigger (Transact-SQL).

Natychmiastowe aktualizowanie

  • Natychmiastowe aktualizowanie subskrypcji zmiany przez subskrybent są propagowane do Wydawca i stosowane przy użyciu Microsoft transakcja rozproszona Coordinator (MS DTC).Upewnij się, że usługa MS DTC jest zainstalowany i skonfigurowany Wydawca i subskrybent.Aby uzyskać więcej informacji zobacz w dokumentacji systemu Windows.

  • Wyzwalacze, używanych przez bezpośrednich subskrypcji aktualizacji wymaga połączenia do Wydawca do replikowania zmian.Aby uzyskać informacje na temat zabezpieczania tego połączenia Zobacz Security Considerations for Updating Subscriptions.

  • Artykuł w publikacja ma filtr kolumn publikacja umożliwia natychmiastowe subskrypcji aktualizacji, nie można odfiltrować kolumna nie dopuszczającej bez ustawień domyślnych.

Aktualizacja w kolejce

  • Tabele uwzględnione w publikacja korespondencji seryjnej nie można opublikować także jako kolejkowanej część transakcyjnych publikacja, która 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 Lokalizator rekordu dla wszystkich kwerend.Gdy subskrybent WINS ma wartość zasad rozwiązywania konfliktów, aktualizacji kluczy podstawowych należy z rozwagą.Jeżeli aktualizacje do klucz podstawowy obu wydawcę i subskrybent, wynik będzie dwa wiersze z różnych kluczy podstawowych.

  • W przypadku kolumn z danymi typu SQL_VARIANT: gdy dane są wstawiane lub zaktualizowany przez subskrybent, go jest mapowany w następujący sposób przez agenta Reader kolejki podczas ich kopiowania z subskrybent do kolejki:

    • BIGINT, DECIMAL, NUMERIC, MONEY, a SMALLMONEY są mapowane na NUMERIC.

    • BINARY i VARBINARY są mapowane na VARBINARY dane.

Wykrywanie konfliktów i rozdzielczości

  • Do subskrybent WINS są w konflikcie zasad: Rozwiązywanie konfliktów nie jest obsługiwana w przypadku aktualizacji do kolumny klucz podstawowy.

  • Konflikty ze względu na ograniczenia na klucz obcy błędy nie są rozpoznawane przez replikację:

    • Jeśli konflikt nie oczekuje się i dane dobrze jest podzielony na partycje (subskrybentów nie mogą aktualizować te same wierszy), można użyć ograniczenia na klucz obcy Wydawca i subskrybentów.

    • Jeśli oczekuje się konflikty: nie należy używać ograniczeń klucz obcy Wydawca lub subskrybenta korzystania z rozwiązywania konfliktów "Subskrybenta wins"; nie należy używać ograniczeń klucz obcy subskrybent użycia "Wydawca wygrywa" rozwiązywania konfliktów.