Aracılığıyla paylaş


sys.sp_cdc_enable_table (Transact-SQL)

Etkinleştirir, geçerli veritabanında belirli bir kaynak tablo için veri yakalamayı değiştirin.Bir tablo, değişiklik veri yakalama için etkinleştirildiğinde, her veri düzenleme Dil (DML) işlemi tabloya uygulanmış kaydını hareket günlüğüne yazılır.Değişiklik veri yakalama işlemi günlükten bu bilgileri alır ve kullanılarak erişilen tabloları değiştirmeye Yazar bir küme işlevleri.

Veri yakalama değişikliği yalnızca kullanılabilir SQL Server 2008 Enterprise Developer ve değerlendirme sürümleri.

Topic link iconTransact-SQL sözdizimi kuralları

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' ]

Bağımsız değişkenler

  • [ @source_schema = ] 'source_schema'
    Is the name of the schema in which the source table belongs.source_schema is sysname, with no default, and cannot be NULL.

  • [ @source_name = ] 'source_name'
    Is the name of the source table on which to enable change data capture.source_name is sysname, with no default, and cannot be NULL.

    source_name Geçerli veritabanında bulunması gerekir.Içindeki tablolar cdc şema değişikliği veri yakalama için etkin duruma getirilemez.

  • [ @role_name = ] 'role_name'
    Is the name of the database role used to gate access to change data.role_name is sysname and must be specified.Açıkça, küme NULL,'için hiçbir gating rolünü değiştirme veri erişimi sınırlamak için kullanılır.

    Role şu anda varsa kullanılır.Rol yoksa, belirtilen adı taşıyan bir veritabanı rolü oluşturma girişimi yapılır.Rol adı boşluk sağ tarafındaki kesildikten dize rolünü oluşturmaya çalışmadan önce.Arayanın, veritabanı içinde bir rol oluşturmak için yetkilendirilmemiş, saklı yordam işlemi başarısız olur.

  • [ @capture_instance = ] 'capture_instance'
    Is the name of the capture instance used to name instance-specific change data capture objects.capture_instance is sysname and cannot be NULL.

    If not specified, the name is derived from the source schema name plus the source table name in the format schemaname_sourcename.capture_instance cannot exceed 100 characters and must be unique within the database.Belirtilen veya türetilmiş, capture_instance bir boşluk sağa dizenin kesildikten.

    Bir kaynak tablo en çok iki yakalama örneği olabilir.Daha fazla bilgi için bkz: sys.sp_cdc_help_change_data_capture (Transact-SQL).

  • [ @supports_net_changes = ] supports_net_changes
    Indicates whether support for querying for net changes is to be enabled for this capture instance.supports_net_changes is bit with a default of 1 if the table has a primary key or the table has a unique index that has been identified by using the @index\_name parameter.Aksi halde parametre 0 varsayılan olur.

    0, Yalnızca destek işlevleri sorgulamak için tüm değişiklikleri üretilir.

    1, Net değişim için sorgulamak için gereken işlevleri de oluşturulur.

    If supports_net_changes 1 olarak küme index_name belirtilmiş olmalı, ya da kaynak tablo birincil anahtar tanımlanmış olmalıdır.

  • [ @index_name = ] **'**index_name'
    The name of a unique index to use to uniquely identify rows in the source table.index_name is sysname and can be NULL.Belirtilmişse, index_name kaynak bilgisayarda geçerli benzersiz bir dizin olmalıdır tablo. If index_name , tanımlanan dizin sütunları götüren önceliği tanımlanmış tüm birincil anahtar sütunlarını üzerinde benzersiz satır tanımlayıcısı olarak belirtilen tablo.

  • [ @captured_column_list = ] 'captured_column_list'
    Identifies the source table columns that are to be included in the change table.captured_column_list is nvarchar(max) and can be NULL.null ise, değişikliği tüm sütunları içerdiği tablo.

    Sütun adları geçerli kaynak sütun olmalıdır tablo.Birincil bir anahtar dizininde tanımlanan bir sütun veya sütunları tarafından başvuruda bulunulan bir dizin tanımlı index_name dahil edilmelidir.

    captured_column_list sütun adları virgülle ayrılmış bir listesi verilmektedir.Tek sütun adları listesinden isteğe bağlı olarak iki çift tırnak işaretleri kullanarak tırnaklı ("") veya köşeli ayraçlar ([]).Bir sütun adı, katıştırılmış bir virgül içeriyorsa, sütun adı teklif gerekir.

    captured_column_list Aşağıdaki ayrılmış sütun adlarının bulunamaz: __ $ start_lsn, __ $ end_lsn, __ $ seqval, __ $ işlemi, and __ $ update_mask.

  • [ @filegroup_name = ] 'filegroup_name'
    Is the filegroup to be used for the change table created for the capture instance.filegroup_name is sysname and can be NULL.Belirtilmişse, filegroup_name Geçerli veritabanı için tanımlanmış olmalıdır. null ise, varsayılan dosya grubu kullanılır.

    Ayrı bir dosya grubu, değişiklik veri yakalamayı değiştirmek için tablo oluşturma öneririz.Daha fazla bilgi için bkz:Veri yakalama Değiştir'i yapılandırma.

  • [ @allow_partition_switch= ] 'allow_partition_switch'
    Indicates whether the SWITCH PARTITION command of ALTER TABLE can be executed against a table that is enabled for change data capture.allow_partition_switch is bit, with a default of 1.

    Nonpartitioned tablolar, anahtar ayarı her zaman 1'dir ve gerçek ayar gözardı edilir.Anahtar açıkça ise küme 22857 anahtarı küme ting sayıldı belirtmek için verilen uyarı nonpartitioned bir tablo için 0.Anahtar açıkça ise küme bölümlenmiş tablo, uyarı için 0 22356 kaynak tablo bölümü geçiş işlemleri izni belirtmek için verilir.Son olarak, her iki kümeye açıkça 1 veya 1 için'varsayılan izin verilen anahtar ayardır ve 22855 uyarı etkin tablo bölümlendirilir bölüm anahtarlarının değil engellenmiş belirtmek için verilir.Herhangi bir bölümü anahtarları oluşursa, değişiklik veri yakalama anahtarı kaynaklanan değişiklikleri izler değil.Bu değişiklik veri harcanan zaman, veri tutarsızlıkları neden olur.

    Important noteImportant Note:

    ANAHTAR PARTITION meta veriler bir işlemdir, ancak veri değişiklikleri olur.Bu işlemle ilişkili değişiklikleri verilerde değişiklik yakalanan verileri değiştirme tabloları yakalayın.Üç bölümü olan bir tabloda göz önünde bulundurun ve bu tabloya yapılan değişiklikler.Yakalama işlemi kullanıcı ekleme, güncelleştirme ve tablo karşı çalıştırılan silme işlemleri izler.Ancak, bir bölümü dışında diğerine geçtiyseniz tablo (bir toplu silme gerçekleştirmek için örneğin), bu işlemin bir parçası olarak yakalanması değil, taşınan satırları değişiklik satırları silindi tablo.Benzer şekilde, prepopulated yeni bir bölüm, satır eklenir için tablo, bu satırlar değişiklik yansıtılmayacak tablo.Bu değişiklikleri bir uygulama tarafından tüketilen ve bir hedef uygulanmış, veri tutarsızlığına yol açabilir.

Dönüş Kodu Değerleri

0 (başarılı) veya 1 (hata)

Sonuç Kümeleri

None

Remarks

Bir tablo için veri yakalama Değiştir'i etkinleştirmeden önce veritabanının etkinleştirilmesi gerekir.Veritabanı değişiklik veri yakalama için etkinleştirilip etkinleştirilmeyeceğini belirlemek için , query is_cdc_enabled sütunsys.Databases kataloğunu görüntüleyin.Veritabanı'nı etkinleştirmek için sys.sp_cdc_enable_db saklı yordamını.

Bir tablo için bir değişiklik veri yakalama etkinleştirildiğinde, değişikliği tablo ve bir veya iki sorgu işlevleri oluşturulur.Değişiklik tablonun kaynak tablo değişikliklerin hareket günlükten yakalama işlemi tarafından açılan bir depo görür.Yapılan değişiklik veri ayıklamak için kullanılan sorgu işlevleri tablo.Bu işlevlerin adları türetilir capture_instance aşağıdaki yöntemlerle parametre:

  • Tüm değişiklikleri işlev: cdc.fn_cdc_get_all_changes_<capture_instance>

  • Net Değişim işlev: cdc.fn_cdc_get_net_changes_<capture_instance>

sys.sp_cdc_enable_table , yakalama de oluşturur ve temizleme işleri için etkin olması için veritabanındaki ilk tablonun kaynak tablo, veritabanı için veri yakalamayı değiştirmek ve hiçbir işlem yayınlar için veritabanını kayıtlı.Bu ayarlar is_tracked_by_cdc sütunsys.Tables 1 kataloğunu görüntüleyin.

Not

SQL Server Aracı, değişiklik veri yakalama bir tablo için etkinleştirildiğinde, çalışan yok.Ancak, yakalama işlemi işleyecek olmayan işlem günlüğü ve girişleri değişiklik tabloya sürece yazma SQL Server Aracısı çalışıyor.

İzinler

Üyelik gerektirir db_owner sabit veritabanı rolü.

Örnekler

C.Yalnızca gerekli parametreleri belirterek etkinleştirme değişiklik verileri yakalama

Aşağıdaki örnek etkinleştirir, veri yakalama için değiştirme HumanResources.Employee Tablo. Gerekli parametreler belirtilmedi.

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

b.Ek bir isteğe bağlı parametreler belirterek etkinleştirme değişiklik verileri yakalama

Aşağıdaki örnek etkinleştirir, veri yakalama için değiştirme HumanResources.Department Tablo. Dışında tüm parametreleri @allow\_partition\_switch belirtilmedi.

USE AdventureWorks;
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