sys.sp_cdc_enable_table (języka Transact-SQL)

Umożliwia zmienianie przechwytywania danych dla określonego źródło tabela w bieżącej bazie danych.Po włączeniu tabela do przechwytywania danych zmiana zapisywania rekordu każdej operacji język edycji danych (DML), zastosowane w tabela dziennik transakcji.Zmiana procesu przechwytywania danych pobiera informacje z dziennika i zapisuje ją zmienić tabele, które są dostępne przy użyciu zestaw funkcji.

Przechwytywanie danych zmian jest dostępne tylko w SQL Server 2008 wersji Enterprise, Developer i oceny.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sys.sp_cdc_enable_table 
  [ @source_schema = ] 'source_schema', 
  [ @source_name = ] 'source_name' ,
  [ @role_name = ] 'role_name'
  [,[ @capture_instance = ] 'capture_instance' ]
  [,[ @supports_net_changes = ] supports_net_changes ]
  [,[ @index_name = ] 'index_name' ]
  [,[ @captured_column_list = ] 'captured_column_list' ]
  [,[ @filegroup_name = ] 'filegroup_name' ]
  [,[ @partition_switch = ] 'partition_switch' ]

Argumenty

  • [ @ source_schema = ] 'source_schema"
    Jest to nazwa schematu należytabela źródło. source_schemajest sysname, z Brak domyślnej i nie może być NULL.

  • [ @ source_name = ] 'source_name"
    To zmiany nazwy źródło tabela , na którym należy włączyć przechwytywania danych.source_namejest sysname, z Brak domyślnej i nie może być NULL.

    source_namemusi istnieć w bieżącej bazie danych.Tabele w ZOZ schematu nie może być włączone do przechwytywania danych zmian.

  • [ @ role_name = ] 'role_name"
    Jest to nazwa rola bazy danych , używane do dostępu Bramka do zmiany danych.role_name jest sysname i musi być określona.Jeśli jawnie zestaw wartość null, brak bramkowania roli jest używana do ograniczenia dostępu do danych zmiana.

    Jeśli rola aktualnie istnieje, zostanie użyta.Jeśli rola nie istnieje, przeprowadzana jest próba utworzenia rola bazy danych o określonej nazwie.Nazwa roli przycięciu odstępu na prawo ciąg przed przystąpieniem do tworzenia roli.Jeżeli obiekt wywołujący nie ma uprawnień do tworzenia roli w bazie danych, procedura składowana operacja nie powiedzie się.

  • [ @ capture_instance = ] 'capture_instance"
    Jest nazwą przechwytywania wystąpienie używane nazwy wystąpienie-przechwytywania danych zmiana określonych obiektów.capture_instancejest sysname i nie może być NULL.

    Jeśli nie określono nazwy pochodzi od nazwy schematu źródło plus nazwatabela źródłow formacie schemaname_sourcename. capture_instancenie może przekraczać 100 znaków i musi być unikatowa w bazie danych.Czy określone lub pochodnych, capture_instance okrojone z dowolny odstęp po prawej stronie ciąg.

    źródłotabela może mieć maksymalnie dwa wystąpienia przechwytywania. Aby uzyskać więcej informacji, zobacz sys.sp_cdc_help_change_data_capture (języka Transact-SQL).

  • [@ supports_net_changes = ] supports_net_changes
    Wskazuje, czy obsługa kwerend dla zmiany netto jest włączone dla tego przechwytywania wystąpienie.supports_net_changes jest bit Domyślna wartość 1, jeśli w tabela klucz podstawowego lub tabela ma indeks unikatowy , który został zidentyfikowany za pomocą @index_name parametru.W przeciwnym razie parametr domyślnie 0.

    Jeśli ustawiona na 0, generowane są tylko funkcje obsługi kwerend dla wszystkich zmian.

    1, Funkcje, które są potrzebne dla zmiany netto kwerendy są generowane.

    Jeśli supports_net_changes jest zestaw na 1, index_name musi być określona, lub źródło tabela musi mieć zdefiniowany kluczpodstawowy.

  • [ @ index_name = ] **'**index_name"
    Nazwa indeks unikatowy unikatowo identyfikować wierszy wtabela źródło. index_name jest sysname i może być NULL.Jeśli określony, index_name musi być prawidłowym indeks unikatowy wtabela źródło. Jeśli index_name jest określony, kolumny indeksu zidentyfikowanych pierwszeństwo żadnych kolumn zdefiniowanych podstawowy klucz jako identyfikator unikatowy wiersz tabela.

  • [ @ captured_column_list = ] 'captured_column_list"
    Identyfikuje źródłokolumnytabela , które mają zostać uwzględnione w tabelazmiana. captured_column_listjest nvarchar(max) i może być NULL.Jeśli ma wartość NULL, wszystkie kolumny są uwzględniane w tabelazmiana.

    Nazwy kolumn muszą być prawidłowe kolumn wtabela źródło. Kolumn zdefiniowanych w indeks klucz podstawowego lub kolumn zdefiniowanych w indeksie przez index_name , muszą być włączone.

    captured_column_listjest rozdzielana przecinkami lista nazw kolumna .Nazw poszczególnych kolumna na liście mogą być opcjonalnie podane przy użyciu albo podwójny cudzysłów ("") ani nawiasów kwadratowych ([]).Jeśli nazwa kolumna zawiera osadzone przecinek, można podać nazwę kolumna .

    captured_column_listnie mogą zawierać następujących nazw zastrzeżonych kolumna : __$ start_lsn, __$ end_lsn, __$ seqval, operacji $ __, i __$ update_mask.

  • [ @ filegroup_name = ] 'filegroup_name"
    grupa plików ma być używany utworzony przechwytywania wystąpieniezmiany tabela .filegroup_name jest sysname i może być NULL.Jeśli określony, filegroup_name muszą być zdefiniowane dla bieżącej bazy danych.Jeśli wartość NULL, używana jest domyślna grupa plików .

    Zaleca się tworzenie oddzielnych grupa plików do przechwytywania danych zmień zmienić tabele.Aby uzyskać więcej informacji, zobacz Konfigurowanie zmiana przechwytywanie danych.

  • [ @ allow_partition_switch= ] 'allow_partition_switch"
    Wskazuje, czy tabela , który jest włączony do przechwytywania danych zmian można wykonywać polecenia przełącznika PARTYCJI ALTER TABLE.allow_partition_switchjest bit, domyślna wartość 1.

    Dla tabel nonpartitioned ustawienia przełącznika jest zawsze 1, a rzeczywiste ustawienie jest ignorowane.Jeśli przełącznik jest jawnie zestaw na 0 w przypadku nonpartitioned tabelaostrzeżenie 22857 wydaje się wskazywać ustawienia przełącznika został zignorowany.Jeśli przełącznik jest jawnie zestaw na 0 w przypadku tabela partycjonowanaostrzeżenie 22356 wydaje się wskazywać, że będą niedozwolone operacje przełącznik partycji wtabela źródło. Wreszcie Jeśli ustawienie przełącznik jest albo zestaw jawnie 1 lub dopuszczone do domyślnego 1 i obsługą tabela jest podzielony na partycje, ostrzeżenie, że 22855 wydaje się wskazywać przełączniki partycji nie będą blokowane.Występują przełącznikami partycji przechwytywania danych zmiany nie będą śledzone zmiany wynikające z przełącznikiem.Spowoduje to niespójności danych po zużytych Zmień dane.

    Ważna informacjaWażne:

    Operacja metadane jest przełącznik PARTYCJI, ale spowoduje zmianę danych.Dane, które zmiany, które są skojarzone z tej operacji nie są przechwytywane dane zmiany Przechwyć zmiany tabel.Należy wziąć pod uwagę tabela , która ma trzy partycje i zmian wprowadzonych w tej tabela.Proces przechwytywania będą śledzić użytkowników insert, update i operacji usuwania, które są wykonywane w tabela.Jednak jeśli partycji przełączania się do innej tabela (na przykład, aby wykonać delete luzem), wiersze, które zostały przeniesione w ramach tej operacji nie będzie uwzględniona w usuniętych wierszy w tabelazmiana.Podobnie jeśli nowej partycji, która ma wstępnie wiersze są dodawane do tabela, wiersze te nie wpłyną w tabelazmiana.Może to spowodować niespójność danych, gdy zmiany są zużywane przez aplikację i stosowane do obiekt docelowy.

Wartości kodów powrotnych

0 (sukces) lub 1 (błąd)

Zestawy wyników

Brak

Uwagi

Przed włączeniem tabela do przechwytywania danych zmian bazy danych musi być włączony.Aby ustalić, czy baza danych jest włączona dla zmiany przechwytywania danych, kwerendy is_cdc_enabled kolumna w sys.databases katalogu widoku.Aby włączyć bazę danych, użyj sys.sp_cdc_enable_db procedura składowana.

Podczas przechwytywania danych zmian jest włączona dla tabela, zmiana tabela i jedną lub dwie funkcje kwerendy są generowane.Zmienianie tabela służy jako repozytorium dla zmiantabela źródłoekstrahowanych z dziennika transakcji proces przechwytywania. Funkcje kwerendy są używane do wyodrębnić danych z tabelazmiana.Nazwy te funkcje są uzyskiwane z capture_instance parametr w następujący sposób:

  • Wszystkie zmiany funkcja: CDC.fn_cdc_get_all_changes_<capture_instance>

  • Zmiany netto w funkcja: CDC.fn_cdc_get_net_changes_<capture_instance>

sys.sp_cdc_enable_table tworzy również zadania przechwytywania i oczyszczanie bazy danych, jeśli źródło tabela jest pierwsza tabela w bazie danych mają być włączone do przechwytywania danych zmian, a nie transakcyjnych publikacji dla bazy danych.Ustawia is_tracked_by_cdc kolumna w sys.tables katalogu Widok 1.

Ostrzeżenie

SQL ServerAgent nie ma być uruchomione podczas przechwytywania danych zmian jest włączona dla tabela.Jednak proces przechwytywania nie będą przetwarzać dzienników transakcji i tworzyć wpisy w tabela zmiana, chyba że SQL Server Agent jest uruchomiony.

Uprawnienia

Wymaga członkostwa w db_owner rola bazy danychstałej.

Przykłady

A.Włączanie zmian przechwytywania danych przez podanie tylko wymaganych parametrów

Następujący przykład pozwala zmienić przechwytywania danych dla HumanResources.Employee tabela.Wymagane parametry są określone.

USE AdventureWorks2008R2;
GO
EXECUTE sys.sp_cdc_enable_table
    @source_schema = N'HumanResources'
  , @source_name = N'Employee'
  , @role_name = N'cdc_Admin';
GO

B.Włączanie zmian przechwytywania danych przez określenie dodatkowych parametrów opcjonalnych

Następujący przykład pozwala zmienić przechwytywania danych dla HumanResources.Department tabela.Wszystkie parametry z wyjątkiem @allow_partition_switch podano.

USE AdventureWorks2008R2;
GO
EXEC sys.sp_cdc_enable_table
    @source_schema = N'HumanResources'
  , @source_name = N'Department'
  , @role_name = N'cdc_admin'
  , @capture_instance = N'HR_Department' 
  , @supports_net_changes = 1
  , @index_name = N'AK_Department_Name' 
  , @captured_column_list = N'DepartmentID, Name, GroupName' 
  , @filegroup_name = N'PRIMARY';
GO