Udostępnij za pośrednictwem


Pomijanie błędy replikacji transakcyjnej

Dla replikacja transakcyjna, istnieją dwa sposoby pomija błędy, jeśli wystąpi podczas procesu dystrybucji:

  • - skiperrors parametr agenta dystrybucji, które pozwala pominąć błędy określonego typu.Transakcji z powodu błędu nie jest zobowiązana, ale są kolejnych transakcji.

  • Sp_setsubscriptionxactseqno procedura składowana, które pozwala pominąć jednej lub więcej transakcji, które powodują błędy.Ta opcja nie jest dostępna dla nie-SQL Server abonentów.

Ważna informacjaWażne:

W obszarze Typowe replikacja przetwarzania nie powinna występować błędy, które muszą zostać pominięte.Błędy powinny pominięte z rozwagą i zrozumienie jest jakie warunek błędu, dlaczego występuje i dlaczego błąd lub określonych transakcji musi być pominięte raczej niż rozwiązany.Jeśli transakcje są zaangażowane w Wydawca są pomijane przez subskrybenta dwa węzły nie zostanie całkowicie zsynchronizowany, co może prowadzić do błędów dodatkowe.

SkipErrors - parametr

Domyślnie gdy Agent dystrybucji napotka błąd, agent zatrzymuje.Jeśli używasz - skiperrors parametru i określić oczekiwane błędy lub błędy, które nie mają być zakłócać replikacja, agent będzie rejestrować informacje o błędach, a następnie kontynuować działania.Na przykład, jeśli chcesz określić, że Agent dystrybucji powinny rejestrować zduplikowane naruszenia klucz, ale nadal przetwarzać transakcje kolejnych określić że agent powinny pomija błędy 2601 (nie można wstawić zduplikowanych wierszy klucz obiektu ' %. * ls z indeks unikatowy "%. * ls.) i 2627 (naruszenie ograniczenia % ls ' %. * ls.Nie można wstawić obiektu zduplikowany klucz "%. * ls.):

-SkipErrors 2601;2627

Najczęstszym sposobem użycia - skiperrors parametr jest do korzystania z profilu agenta dystrybucji zatytułowany Nadal na błędy spójności danych.Agent dystrybucji następnie pomija błędy 2601, 2627 i 20598 (wiersz nie znaleziono subskrybent po zastosowaniu polecenia replikowanych).Aby uzyskać więcej informacji, zobacz Profile Agent replikacji.Oprócz tego profilu wstępnie zdefiniowanych w profilu agenta, tworzyć lub modyfikować lub w wierszu polecenia można określić parametr.Aby uzyskać więcej informacji, zobacz:

Ważna informacjaWażne:

Domyślnie uruchamia wykonać z XACT_ABORT na ustawienie.Jeśli instrukcja w wyzwalacz powoduje błąd podczas dystrybucji agenta jest stosowanie zmian subskrybent cały partia zmian zakończy się niepowodzeniem, a nie poszczególnych instrukcji.W replikacja transakcyjna, można użyć - skiperrors parametr agenta dystrybucji pominięcia instrukcji, które powodują błędy.Jeśli - skiperrors jest używana z XACT_ABORT na całej partia zmian jest pomijany, jeśli instrukcja powoduje błąd.Chyba że wymagają XACT_ABORT zestaw on wyzwalaczy, zaleca się zestaw go na OFF Jeśli używasz - skiperrors parametru.Aby zestaw określić opcję Wył., SET XACT_ABORT OFF w definicji wyzwalacza.Aby uzyskać więcej informacji o XACT_ABORT, zobacz ZESTAW XACT_ABORT (Transact-SQL).

Sp_setsubscriptionxactseqno procedura przechowywana

Sp_setsubscriptionxactseqno procedura składowana można pominąć jednej lub więcej transakcji, które powodują błędy, po zastosowaniu subskrybent.Jeżeli nie chcesz pominąć jednej lub więcej transakcji:

  1. Wykonanie sp_helpsubscriptionerrors u dystrybutora po agenta dystrybucji zatrzymuje.Ta procedura składowana zwraca kolumna xact_seqno, który zawiera numer sekwencyjny dziennika (LSN) dla każdego nieudana transakcja.

  2. Wykonanie sp_setsubscriptionxactseqno, określając wartość dla parametru @ xact_seqno.Jeśli chcesz pominąć wszystkie nieudane transakcje określ największą LSN zwrócony przez sp_helpsubscriptionerrors.

Aby uzyskać więcej informacji, zobacz sp_setsubscriptionxactseqno (języka Transact-SQL) i sp_helpsubscriptionerrors (języka Transact-SQL).