Mam pytanie dotyczące próby wstrzymania dużej transakcji u wydawcy dystrybuowanego do subskrybentów. Powiedzmy, że ktoś przypadkowo aktualizuje każdy rekord w tabeli z 50 milionami rekordów, a następnie, po popełnieniu błędu, przywraca wszystkie rekordy. W tym przypadku zmiany zostaną rozdzielone między dwóch subskrybentów w konfiguracji replikacji transakcyjnej. W systemie mówi, że będzie 2 dni, aby replikować do subskrybentów, ale jaki jest najlepszy sposób na pokonanie tego?Zatrzymaj replikację dużej transakcji w SQL Server
Widziałem, że jest możliwe i w rzeczywistości bardzo łatwo pominąć polecenie, korzystając z transakcji: xact_seqno
, sp_helpsubscriptionerrors
i sp_setsubscriptionxactseqno
. Co się jednak stanie, jeśli zostanie to użyte w transakcji, która była aktywnie dystrybuowana? Czy należy coś zatrzymać?
Jeśli to nie jest najlepszy sposób na rozwiązanie problemu, co by to było?
Po prostu próbowałem zrobić to w osobnej konfiguracji środowiska testowego, aby wypróbować to. Używanie 'sp_setsubscriptionxactseqno' nie działa; transakcja nadal została zastosowana. Próbowałem również usuwać z 'MSrepl_commands' i' MSrepl_transactions' na tym samym 'xact_seqno', ale wszystkie zmiany były nadal dystrybuowane. Bardzo zdezorientowany! – o2908