Aracılığıyla paylaş


sys.sp_cdc_enable_table (Transact-SQL)

Etkinleştirir, geçerli veritabanında belirtilen kaynak tablo için veri yakalama Değiştir.tablo Değiştir veri yakalama için etkin olduğunda, tablo uygulanmış her veri işleme dili (DML) işlemi kaydını işlem günlüğüne kaydedilir.Değişiklik veri yakalama işlemi günlük dosyasını bu bilgileri alır ve onu bir küme işlevlerini kullanarak erişilen tabloları değiştirmek için yazar.

Değişiklik veri yakalama yalnızca SQL Server 2008 kuruluş, Developer ve değerlendirme sürümleri.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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'
    İçinde kaynak tablo ait olduğu şema addır.source_schemaİş sysname, hiçbir varsayılan ile ve null.

  • [ source_name @ = ] 'source_name'
    Etkinleştirmek istediğiniz kaynak tablo adını değiştir veri yakalama olur.source_nameİş sysname, hiçbir varsayılan ile ve null.

    source_nameGeçerli veritabanında bulunması gerekir.Tablolar hdm şema değişiklik veri yakalama için etkinleştirilemiyor.

  • [ @ role_name = ] 'role_name'
    Verileri değiştirmek için kullanılan geçidi erişimi veritabanı rolü addır.role_name İş sysname ve belirtilmelidir.Açıkça, küme NULL, gating hiçbir rol değişikliği veri erişimi sınırlamak için kullanılır.

    Şu anda yoksa, kullanılır.Rol yoksa, belirtilen adı taşıyan bir veritabanı rolü oluşturmak için girişimi yapılır.Rol adı boşluk sağ dize rolü oluşturmaya başlamadan önce kesildikten.Arayan veritabanı içinde bir rol oluşturmak için yetkili değil, saklı yordam işlemi başarısız olur.

  • [ @ capture_instance = ] 'capture_instance'
    Adı örnekkullanılan yakalama örnek adıdır-özel bir değişiklik veri yakalama nesneler.capture_instanceİş sysname ve olamaz null.

    Belirtilmezse, adı kaynak şeması adı artı biçiminde kaynak tablo adı türetilir schemaname_sourcename.capture_instance100 karakterden fazla olamaz ve veritabanı içinde benzersiz olmalıdır.Belirtilen ya da türetilmiş, capture_instance dizesağındaki herhangi bir boşluk kesildikten.

    kaynaktablo 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
    Gösterir olup net değişiklikler için sorgulama bu yakalama örnekiçin etkin olması için destek.supports_net_changes İş bit bir varsayılan tablo birincil anahtar veya tablo kullanarak tanımlanan bir benzersiz dizin 1 ile @index_name parametresi.Aksi halde 0 parametre varsayılan.

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

    1, Net değişiklikleri sorgular için gereken işlevleri de üretilir.

    supports_net_changes Olan küme 1, index_name belirtilmesi gerekir veya kaynaktablo tanımlı birincil anahtarolmalıdır.

  • [ @ index_name = ] **'**index_name'
    kaynaktablosatırları benzersiz olarak tanımlamak için kullanılacak bir benzersiz dizin adı. index_name İş sysname ve olabilir null.Belirtilmişse, index_name benzersiz dizin geçerli bir kaynak tabloolmalıdır.index_name Belirtilirse, belirtilen dizin sütunları önceliklidir üzerinde tanımlı birincil anahtar sütun tabloiçin benzersiz satır tanımlayıcısı olarak.

  • [ @ captured_column_list = ] 'captured_column_list'
    Değişikliği tablodahil edilecek kaynaktablo sütunları tanımlar. captured_column_listİş nvarchar(max) ve olabilir null.BOŞ, tüm sütunları değiştirme tablodahil edilir.

    Sütun adları geçerli kaynak tablosütunları olması gerekir.Bir birincil anahtar dizini tanımlanan sütunları veya tarafından başvuruda bulunulan Dizinde tanımlanan sütunları index_name dahil edilmelidir.

    captured_column_listsütun adlarının virgülle ayrılmış bir listesi verilmiştir.Tek sütun adları listesi içinde isteğe bağlı olarak teklif ya da çift týrnak iþaretleri kullanarak ("") veya köşeli ayraçlar ([]).Bir sütun adı bir katıştırılmış virgül içeriyorsa, sütun adı tırnak içine alınmalıdır.

    captured_column_listAşağıdaki ayrılmış sütun adlarını içeremez: __$ start_lsn, __$ end_lsn, __$ seqval, __$ işlemi, ve __$ update_mask.

  • [ filegroup_name @ = ] 'filegroup_name'
    dosya grubu için yakalama örnekoluşturulan değişikliği tablo için kullanılmasıdır.filegroup_name İş sysname ve olabilir null.Belirtilmişse, filegroup_name gerekir tanımlı geçerli veritabanı.null varsayılan dosya grubu kullanılır.

    Tablo Değiştir veri yakalama değiştirmek için ayrı bir dosya grubu oluşturma öneririz.Daha fazla bilgi için, bkz. Değişiklik veri yakalama yapılandırma.

  • [ @ allow_partition_switch= ] 'allow_partition_switch'
    alter table anahtar bölümü komut Değiştir veri yakalama için etkin tablo yürütülebilecek olup olmadığını belirtir.allow_partition_switchİş bit, varsayılan değer 1.

    Nonpartitioned tablo için anahtar ayarı her zaman 1 ve gerçek ayar gözardı edilir.Anahtar açıkça kullanılırsa küme için 22857 uyarı nonpartitioned tablo, 0 anahtar ayarı dikkate belirtmek için verilir.Anahtarı açıkça küme 0 bölümlenmiş tablo, uyarı olup olmadığını 22356, kaynak tablo bölüm geçiş işlemleri verilmeyecek belirtmek için verildiği.Son olarak, anahtar ayarı ya da küme açıkça 1 ya da 1 ve etkin tablo için varsayılan olarak izin verilen bölümlere ise, 22855 bölüm anahtarlarını bloke belirtmek için verilen uyarı.Herhangi bir bölümü anahtar oluşursa, değişiklik veri yakalama anahtarından kaynaklanan değişiklikleri izlemek değil.Değişiklik veri tüketildiğinde bu veri tutarsızlıkları neden olur.

    Önemli notÖnemli

    meta veriler işlemi anahtarı bölümdür, ancak veri değişikliklerine neden olur.Bu işlemle ilişkili değişiklikler bulunan verileri değiştirme yakalanmış değil veri değişim tabloları yakalamak.Üç bölüm olan bir tablo düşünün ve bu tabloyapılan değişiklikler.Yakalama işlemi, kullanıcı ekleme, güncelleştirme ve tablokarşı gerçekleştirilen silme işlemleri izler.Ancak, başka bir tablo (örneğin, bir yığın delete işlemini gerçekleştirmek için) dışında bir bölüm geçti, bir parçası olarak taşınan satır bu işlem yok olacak değişikliği tablosilinen satır olarak yakalanmış.Benzer şekilde, tablosatır önceden girilmiş yeni bir bölüm eklenir, bu satırlar değişikliği tabloyansıtılmaz.Bu değişiklikleri bir uygulama tarafından tüketilen ve hedefiçin uygulanan, veri tutarsızlığına neden olabilir.

Dönüş Kodu Değerleri

0 (başarılı) veya 1 (başarısız)

Sonuç Kümeleri

Hiçbiri

Açıklamalar

tablo Değiştir veri yakalama için etkinleştirmek için önce veritabanı etkinleştirilmiş olması gerekir.Veritabanı Değiştir veri yakalama için etkin olup olmadığını belirlemek için query is_cdc_enabled sütun sys.databases Katalog görünümü.Veritabanı kullanın sys.sp_cdc_enable_db saklı yordam.

tabloiçin değişiklik veri yakalama etkin olduğunda, bir değişikliği tablo ve bir veya iki sorgu işlevleri üretilir.tablo Değiştir yakalama işlemi tarafından işlem günlük dosyasını ayıkladığınız kaynaktablo değişiklikler için bir depo görevi görür. Sorgu işlevler değişikliği tabloveri ayıklamak için kullanılır.Bu işlevlerin adları elde edilen capture_instance parametresi aşağıdaki şekillerde:

  • Tüm işlevdeğiştirir: cdc.fn_cdc_get_all_changes_<capture_instance>

  • NET işlevdeğiştirir: cdc.fn_cdc_get_net_changes_<capture_instance>

sys.sp_cdc_enable_table ise kaynak tablo Değiştir veri yakalama için etkinleştirilmiş veritabanında ilk tablo ve veritabanı için hiçbir işlem yayımları mevcut veritabanı için yakalama ve temizleme işlerini de oluşturur.Bu ayarlar is_tracked_by_cdc sütun sys.tables katalog görünüm 1.

Not

SQL ServerAracısı için bir tabloDeğiştir veri yakalama etkinleştirildiğinde çalışıyor olması gerekmez.Ancak, yakalama işlemi değil işlem günlüğü işlemek ve sürece değişiklik tablo girişlerini yazmak SQL Server aracısı olarak çalışmaktadır.

İzinler

Üyelik gerektiren db_owner veritabanı rolüsabit.

Örnekler

A.Yalnızca gerekli parametreleri belirterek etkinleştirme değişiklik veri yakalama

Aşağıdaki örnek etkinleştirir değiştirmek için veri yakalama HumanResources.Employee tablo.Gerekli Parametreler belirtilmedi.

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

B.Ek isteğe bağlı parametreler belirterek etkinleştirme değişiklik veri yakalama

Aşağıdaki örnek etkinleştirir değiştirmek için veri yakalama HumanResources.Department tablo.Dışındaki tüm parametrelerden @allow_partition_switch belirtilir.

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