Enabling Change Data Capture
W tym temacie opisano sposób włączania zmian przechwytywanie danych do bazy danych i tabela.
Włączanie Zmień przechwytywanie danych w bazie danych
Przed przechwytywania wystąpienie mogą być tworzone dla poszczególnych tabel, jest członkiem sysadmin Rola serwera w stałej musi najpierw włączyć bazę danych do pobierania danych zmian. Można to zrobić, uruchamiając procedura przechowywana sys.sp_cdc_enable_db (Transact-SQL) w kontekście bazy danych. Aby określić, jeśli baza danych jest już włączony, należy zbadać is_cdc_enabled kolumna w sys.databases Służy do wyświetlania katalogu.
Jeśli baza danych jest włączona dla przechwytywania danych zmian, cdc schemat, cdc Użytkownik, metadane tabele i inne obiekty systemowe są tworzone w bazie danych. The cdc schema contains the change data capture metadane tables and, after urządzenie źródłowe tables are enabled for change data capture, the individual change tables serve as a repozytorium for change data. The cdc schema also contains associated funkcje systemowe used to query for change data.
Przechwytywanie danych zmiana wymaga wyłącznego użytku cdc schemat i cdc użytkownik. Jeśli schemat lub użytkownik bazy danych o nazwie cdc obecnie istnieje w bazie danych, bazy danych nie może być włączone do przechwytywania danych zmian, aż do chwili, kiedy usunięte lub zmieniono jego nazwę schematu, i lub użytkownika.
Zobacz Włączanie bazy danych do przechwytywania danych Zmień szablon przykład Włączanie bazy danych.
Important Note: |
---|
Aby zlokalizować szablony SQL Server Management Studio, przejdź do Widok, click Eksplorator szablonów, a następnie wybierz opcję Program SQL Server szablony.Zmienianie przechwytywanie danych jest podfolder.W tym folderze znajdują się wszystkie szablony, do którego odwołuje się w tym temacie.Dostępna jest również Eksplorator szablonów na ikonęSQL Server Management Studio pasek narzędzi. |
-- ================================
--Włączyć CDC szablonu bazy danych
-- ================================
USE MyDB
GO
EXEC sys.sp_cdc_enable_db
GO
Włączanie Zmień przechwytywanie danych dla tabela
Po bazy danych został włączony do przechwytywania danych zmian, członkowie db_owner stała rola bazy danych można utworzyć wystąpienie przechwytywania dla osoby urządzenie źródłowe tabel za pomocą procedura przechowywana sys.sp_cdc_enable_table. Aby ustalić, czy urządzenie źródłowe tabela już został włączony do przechwytywania danych zmian, zbadać kolumna is_tracked_by_cdc sys.tables Służy do wyświetlania katalogu.
Podczas tworzenia wystąpienie przechwytywania, można określić następujące opcje:
Columns in the source table to be captured.
Domyślnie, wszystkie kolumny w urządzenie źródłowe tabela są identyfikowane jako przechwyconych kolumny.Jeśli tylko podzbiór kolumn muszą być śledzone, takie jak prywatności lub wydajność ze względu na, należy użyć @captured\_column\_list parametr służy do określenia podzbioru kolumn.
A filegroup to contain the change table.
Domyślnie w tabela Zmiana znajduje się w domyślnym grupa plików bazy danych.Właściciele bazy danych, który chcesz kontrolować rozmieszczenie zmiany poszczególnych tabel można użyć @filegroup\_name parametr służy do określenia szczególnych grupa plików, w tabela Zmiana skojarzonego z wystąpienie przechwytywania. Grupę o nazwie plików musi już istnieć.Ogólnie rzecz biorąc, zaleca się, że zmiana tabel ma zostać umieszczone w grupa plików, niezależnie od urządzenie źródłowe tabel.Zobacz Enable a Table Specifying Filegroup Option szablon, na przykład przedstawiający użycie @filegroup\_name parametr.
===================================================
--Umożliwiają określanie szablonów opcję Grupa plików tabela
-- ===================================================
USE MyDB
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'MyTable',
@role_name = N'MyRole',
@filegroup_name = N'MyDB_CT',
@supports_net_changes = 1
GO
A role for controlling access to a change table.
Celem roli o nazwie jest kontrolowanie dostępu do danych zmian.Określonej roli może być istniejącą rolę serwera stały lub rola bazy danych.Jeśli określona Rola już nie istnieje, jest tworzony automatycznie rola bazy danych o tej nazwie.Członkowie zarówno sysadmin lub db_owner rola ma pełny dostęp do danych w tabelach zmiany. Wszyscy pozostali użytkownicy muszą mieć uprawnienie SELECT na wszystkich przechwyconych kolumn z urządzenie źródłowe tabela.Dodatkowo, gdy określono roli, użytkownicy, którzy nie są członkami albo sysadmin lub db_owner Rola musi być również członkami określonej roli.
Jeśli nie chcesz jawnie za pomocą roli bramkowania zestaw @role\_name Parametr wartość null. Zobacz Enable a Table Without Using a Gating Role szablon, na przykład włączenie tabela bez bramkowania roli.
-- ===================================================
--Włączyć tabela bez Using szablonu bramkowanie roli
-- ===================================================
USE MyDB
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'MyTable>',
@role_name = NULL,
@supports_net_changes = 1
GO
A function to query for net changes.
Wystąpienie przechwytywania zawsze będzie zawierać funkcja tabela wyceniane do zwracania wszystkich zmian spisu, który wystąpił w zdefiniowanym przedziale.Ta funkcja nosi nazwę przez dołączenie nazw wystąpień przechwytywania, aby "cdc.fn_cdc_get_all_changes_".Aby uzyskać więcej informacji zobaczcdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL).
Jeśli parametr @supports\_net\_changes jest ustawiona na 1, obroty netto, funkcja również jest generowany dla wystąpienie przechwytywania. Ta funkcja zwraca tylko jednej zmiany dla każdego wiersza różne zmieniać w przedziale czasowym określonym w polu połączenia.Aby uzyskać więcej informacji zobaczcdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL).
W tabela źródłowej do obsługi kwerend obroty netto, musi mieć klucz podstawowy lub indeks unikatowy do jednoznacznej identyfikacji wierszy.Jeśli używany jest indeks unikatowy, Nazwa indeksu musi być podana przy użyciu @index\_name parametr. Definicja kolumny klucz podstawowy lub indeks unikatowy musi znajdować się na liście urządzenie źródłowe kolumny mają być przechwytywane.
Zobacz Enable a Table for All and Net Changes Queries szablon, na przykład ukazujących utworzenie wystąpienie przechwytywania z funkcjami kwerendy.
=======================================================
--Włączanie tabela dla wszystkich i sieci kwerendy zmiany szablonu
-- =======================================================
USE MyDB
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'MyTable',
@role_name = N'MyRole',
@supports_net_changes = 1
GO
Uwaga
Włączenie pobierania danych zmian w tabela z obecnym klucz podstawowy i @index_name Parametr nie jest używany do identyfikowania alternatywnych indeks unikatowy, funkcja przechwytywania danych zmiana będzie używać klucz podstawowy. Kolejne zmiany klucz podstawowy nie jest dozwolona bez pierwszego wyłączanie przechwytywania danych zmian w tabela.Jest to prawdą niezależnie od czy obsługa zażądano kwerendy obroty netto, podczas konfigurowania zmiany przechwytywania danych.Jeśli jest bez klucz podstawowy w tabela u czas jest włączony do przechwytywania danych zmian, dodanie kolejnych kluczem podstawowym jest ignorowany przez zmianę przechwytywania danych.Ponieważ zmiana przechwytywania danych nie będzie używać klucz podstawowy, który jest tworzony po tabela został włączony, można usunąć klucza i kolumny klucza bez ograniczeń.