Udostępnij przez


Change Data Capture and Other SQL Server Features

W tym temacie opisano następujące funkcje interaktywnie przechwytywania danych zmian:

  • IsAnsiNullsEnabled

  • \(w,n)

  • replikacja transakcyjnej

  • Przywracanie bazy danych lub dołączania

Śledzenie zmian

Przechwytywanie danych zmiany i śledzenia zmian można włączyć na tej samej bazy danych.Potrzebne są nie specjalne uwagi.Aby uzyskać więcej informacji zobaczŚledzenie zmian.

Dublowanie bazy danych

Bazy danych, który jest włączony do przechwytywania danych zmiany mogą być dublowane.Aby upewnić się, że przechwytywania i oczyszczania automatycznie stanie na dublowanie, wykonaj następujące kroki:

  1. Upewnić się, że SQL Server Agent jest uruchomiony na dublowanie.

  2. Utworzyć zadanie przechwytywania i zadania oczyszczania na dublowania po głównej została przejęta awaryjnie do dublowania.Aby utworzyć zadania, użyj procedura przechowywana sys.sp_cdc_add_job (Transact-SQL).

Aby uzyskać więcej informacji na temat dublowanie bazy danych zobacz Database Mirroring.

Transakcyjne replikacja

Przechwytywanie danych zmiany i replikacja transakcyjnej mogą współistnieć w tej samej bazie danych, ale zapełnianie tabel zmiana jest obsługiwana inaczej, gdy włączone są obie funkcje.Przechwytywanie danych zmiany i zawsze replikacja transakcyjnej używają tej samej procedury, sp_replcmds, odczytać zmiany dziennik transakcji.Podczas przechwytywania danych zmian jest włączona, SQL Server Wywołania zadanie Agenta sp_replcmds. Aby uzyskać więcej informacji zobaczPrzechwytywanie zadanie.Gdy obie funkcje są włączone na tej samej bazy danych, Agent odczytywania dziennika wywołuje sp_replcmds. Ten agent wypełnia zarówno tabele zmian, jak i tabele baza danych dystrybucji.Aby uzyskać więcej informacji zobaczReplication Log Reader Agent.

Rozważmy scenariusz, w którym przechwytywania danych zmian jest włączone dla bazy danych AdventureWorks i dwie tabele są włączone dla przechwytywania.Aby wypełnić w tabelach zmiany wywołania zadanie przechwytywania sp_replcmds. Baza danych jest włączona dla replikacja transakcyjnej i tworzenia publikacja.Teraz Agent odczytywania dziennika jest tworzony w bazie danych, a zadanie przechwytywania jest usuwany.Agent odczytywania dziennika kontynuuje skanowanie dziennika z ostatniego numer sekwencyjny dziennika, że została zatwierdzona w tabela Zmiana.Zapewnia to spójność danych w tabelach zmiany.Wyłączenie replikacja transakcyjnej w tej bazie danych, Agent odczytywania dziennika są usuwane, a zadanie przechwytywania zostaje utworzony ponownie.

Uwaga

Kiedy Agent odczytywania dziennika jest używany do przechwytywania danych zmiany i replikacja transakcyjnej, replikowanych zmiany są najpierw zapisywane do baza danych dystrybucji.Następnie przechwyconych zmiany są zapisywane do tabel, zmiany.Obie operacje są przekazywane razem.Jeśli podczas zapisywania do baza danych dystrybucji wszelkie opóźnienie, będzie odpowiedni czas oczekiwania przed zmiany pojawiają się w tabelach zmiany.

Przywracanie lub dołączanie włączone do przechwytywania danych zmian bazy danych

SQL Server używa następującej logiki, aby określić, jeśli zmiana przechwytywania danych pozostaje włączony po bazy danych jest przywracany lub podłączone:

  • Po przywróceniu bazy danych na tym samym serwerze, z tą samą nazwą bazy danych, zmień przechwytywania danych pozostaje włączony.

  • Po przywróceniu bazy danych na inny serwer, przez zmianę domyślnych przechwytywania danych jest wyłączona, a wszystkie metadane związane jest usuwany.

    Aby zachować zmiany przechwytywania danych, należy użyć KEEP_CDC opcję podczas przywracania bazy danych. Aby uzyskać więcej informacji na temat tej opcji zobacz PRZYWRACANIE.

  • Jeśli baza danych jest odłączony i dołączone do tego samego serwera lub innego serwera, zmiany przechwytywania danych pozostaje włączony.

  • Jeśli baza danych jest podłączone lub przywracany z KEEP_CDC Opcja do dowolnej wersji innego niż Enterprise, operacja jest zablokowana, ponieważ wymaga zmiany przechwytywania danych SQL Server Flaga. Zostanie wyświetlony komunikat o błędzie 932:

    SQL Server cannot load database '%.*ls' because change data capture is enabled.The currently installed edition of SQL Server does not support change data capture.Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.

Można użyć sys.sp_cdc_disable_db usunąć zmienić przechwytywania danych z bazy danych przywróconych lub dołączone.