Aracılığıyla paylaş


Değişiklik veri yakalama devre

Bu konu, bir veritabanı ve tablo için veri yakalama Değiştir devre açıklar.

Bir veritabanı için veri yakalama Değiştir etkinleştirme

Önce bir yakalama örneği için tek tek tabloların, üye oluşturulabilir sysadminsabit sunucu rolü ilk veritabanı için veri yakalama Değiştir etkinleştirme gerekir. Bu saklı yordamı çalıştırarak yapılır sys.sp_cdc_enable_db (Transact-sql)veritabanı içeriğinde. Veritabanı zaten etkin olup olmadığını belirlemek için query is_cdc_enabledsütununda sys.databasesKatalog görünümü.

Veritabanı Değiştir veri yakalama için etkin olduğunda cdcşema, cdckullanıcı, meta veri tabloları ve diğer sistem nesneleri veritabanında oluşturulur. cdcŞema, değişiklik veri yakalama meta veri tabloları içerir ve sonra kaynak tablo Değiştir veri yakalama için etkinleştirilmiş, tek tek değişiklik tabloları Değiştir veri deposu olarak hizmet. cdcŞema, kullanılan ilişkili sistem işlevleri de içerir sorgu Değiştir veriler.

Değişiklik veri yakalama gerektiren özel kullanımı cdcşema ve cdckullanıcının. Eğer bir şema ya da adlı bir veritabanı kullanıcı cdcşimdilik kadar şema ve veya kullanıcı bırakılan veya yeniden adlandırılmış bir veritabanında değişiklik veri yakalama için veritabanı etkinleştirilemez.

Etkinleştir veritabanı Değiştir veri yakalama şablon için örnek veritabanını etkinleştirme konusuna bakın.

Önemli notÖnemli

Şablonları bulmak için SQL Server Management Studio, gidin View, tıklayın Template Explorerve seçin SQL Server şablonları. Değişiklik veri yakalama bir alt olduğunu. Bu klasörün altında bu konudaki başvurulan tüm şablonları bulabilirsiniz. Ayrıca bir Template Explorer simgesini SQL Server Management Studioaraç.

-- ================================
-- Enable Database for CDC template 
-- ================================
USE MyDB
GO
EXEC sys.sp_cdc_enable_db
GO

Bir veritabanı için veri yakalama Değiştir devre dışı bırakma

Üye sysadminsabit sunucu rolü saklı yordamı çalıştırabilirsiniz sys.sp_cdc_disable_db (Transact-sql)bir veritabanı için veri yakalama Değiştir devre dışı bırakmak için veritabanı içeriğinde. Veritabanı devre dışı bırakmadan önce tek tek tabloların devre dışı bırakmak gerekli değildir. Veritabanı devre dışı bırakmak, tüm ilişkili değişiklik veri yakalama meta kaldırır dahil cdckullanıcı ve şema ve değişiklik veri yakalama işler. Ancak, değişiklik veri yakalama tarafından oluşturulan gating rolleri otomatik olarak kaldırılmaz ve açıkça silinmelidir. Bir veritabanı etkin olup olmadığını belirlemek için query is_cdc_enabledKatalog sütununda.

Değişiklik veri yakalama etkin veritabanı kesilirse, değişiklik veri yakalama işleri otomatik olarak kaldırılır.

Devre dışı veritabanı şablonu Değiştir veri yakalama için veritabanı devre dışı bırakılması, bir örnek için bkz.

Önemli notÖnemli

Şablonları bulmak için SQL Server Management Studio, gidin Görünümü, tıklayın Template Explorerve ardından SQL Server şablonları. Değişiklik veri yakalama nerede bulacaksınız başvurulan tüm şablonları bu konuda bir alt olduğunu. Ayrıca bir Template Explorer simgesini SQL Server Management Studioaraç.

-- =================================================
-- Disable Database for Change Data Capture template 
-- =================================================
USE MyDB
GO
EXEC sys.sp_cdc_disable_db
GO

Bir tablo için veri yakalama Değiştir etkinleştirme

Bir veritabanı için veri yakalama Değiştir, üyelerinin etkinleştirildi sonra db_ownersabit veritabanı rolü yakalama örneği için saklı yordam kullanarak kaynak tablolar oluşturabilirsiniz sys.sp_cdc_enable_table. Kaynak tablo zaten değişiklik veri yakalama için etkin olup olmadığını belirlemek için inceleme is_tracked_by_cdcsütununda sys.tablesKatalog görünümü.

Yakalama örneği oluşturulurken aşağıdaki seçenekler belirtilebilir:

Columns in the source table to be captured.

Varsayılan olarak, kaynak tablodaki sütunların tümünü yakalanan sütun olarak tanımlanır. Sütunların alt gereken yalnızca izlenen, gizlilik veya performans nedenleri gibi kullanmak @captured\_column\_listsütun kümesini belirtmek için parametre.

A filegroup to contain the change table.

Varsayılan olarak, veritabanının varsayılan filegroup değişikliği tablo bulunur. Tek değişiklik tabloları yerleşimini kontrol etmek istediğiniz veritabanı sahipleri-ebilmek kullanma @filegroup\_nameyakalama örneğiyle ilişkili parametre değişikliği tablo için belirli bir filegroup belirtin. Adlandırılmış filegroup önceden mevcut olmalıdır. Genellikle, bu değişiklik tabloları kaynak tablodan ayrı filegroup yerleştirilmesi önerilir. Bkz: Enable a Table Specifying Filegroup Optionkullanımını gösteren bir örnek için şablon @filegroup\_nameparametresi.

-- ===================================================
-- Enable a Table Specifying Filegroup Option Template
-- ===================================================
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.

Değişiklik veri erişimi denetlemek için adlandırılmış rolü amacı budur. Belirtilen rol, varolan bir sabit sunucu rolü veya veritabanı rolü olabilir. Belirtilen rol zaten yoksa, bu adda bir veritabanı rolü otomatik olarak oluşturulur. Üyeleri ya da sysadminveya db_ownerrole sahip tam erişim veri değişim tabloları. Diğer tüm kullanıcıların tüm Yakalanan sütunları kaynak tablo üzerinde select izni olmalıdır. Ayrıca, ne zaman bir rolü belirtilirse, ya da üyesi olan kullanıcılar sysadminya db_ownerrolü de belirtilen rolü olmalı.

Gating rol kullanmak istemiyorsanız, açıkça @role\_nameparametresi NULL. Bkz: Enable a Table Without Using a Gating Roleşablon gating rolü olmayan tablo etkinleştirme örnek.

-- ===================================================
-- Enable a Table Without Using a Gating Role template 
-- ===================================================
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.

Yakalama örneği her zaman tüm değişiklik tanımlanmış bir aralık içinde oluşan tablo girdileri dönen bir tablo değerli işlev içerir. Bu işlev, "cdc.fn_cdc_get_all_changes_" yakalama örneği adına ekleyerek olarak adlandırılır. Daha fazla bilgi için, bkz. CDC.fn_cdc_get_all_changes_<capture_instance> (Transact-sql).

Eğer parametre @supports\_net\_changes1, işlevi de yakalama örneği için oluşturulan bir net değişiklik ayarlanır. Bu işlev çağrısında belirtilen aralıkta değişen farklı her satır tek bir değişiklik döndürür. Daha fazla bilgi için, bkz. değiştirir<capture_instance> (Transact-sql).

NET değişiklikleri sorgular desteklemek için kaynak tablonun birincil anahtar veya benzersiz satırları tanımlamak için benzersiz bir dizin olması gerekir. Benzersiz bir dizin kullanılırsa, dizinin adı kullanılarak belirtilmelidir @index\_nameparametresi. Tanımlanan sütunları birincil anahtar veya benzersiz dizin yakalanacak kaynak sütunlar listesinde dahil edilmesi.

Bkz: Enable a Table for All and Net Changes Queriesşablonu her iki sorgu işlevleriyle yakalama örneğinin oluşturulmasını gösteren bir örnek için.

-- =======================================================
-- Enable a Table for All and Net Changes Queries template 
-- =======================================================
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

[!NOT]

Değişiklik veri yakalama bir tabloda varolan bir birincil anahtarla etkinse ve @index_nameparametresi diğer benzersiz dizin tanımlamak için kullanılan değil, değişiklik veri yakalama özelliği birincil anahtarı kullanacak. Birincil anahtar sonraki değişiklikler ilk devre dışı değişiklik veri yakalama tablo için izin verilmez. Bu ne olursa olsun gerçek net değişiklikleri sorgular istendi değişiklik veri yakalama yapılandırıldığında desteği. Yoksa birincil anahtarı olmayan bir tablo Değiştir veri yakalama için etkin zaman, birincil anahtarı izleyen ek değişiklik veri yakalama tarafından yoksayılır. Değişiklik veri yakalama tablo etkin oldu sonra oluşturulan birincil anahtarı kullanmaz çünkü belgili tanımlık anahtar ve anahtar sütunları kısıtlama olmadan kaldırılabilir.

Bir tablo için veri yakalama Değiştir devre dışı bırakma

Üyeleri db_ownersabit veritabanı rolü-ebilmek çıkarmak saklı yordam kullanarak kaynak tablolar için yakalama örneği sys.sp_cdc_disable_table. Kaynak tablo için veri yakalama Değiştir şu anda etkin olup olmadığını belirlemek için inceleme is_tracked_by_cdcsütununda sys.tablesKatalog görünümü. Sonra devre dışı bırakmak yer için veritabanı etkin tablo varsa, değişiklik veri yakalama işler de kaldırılır.

Değişiklik veri yakalama etkin tablosu kesilirse tablo ile ilişkili değişiklik veri yakalama meta otomatik olarak kaldırılır.

Disable yakalama örnek tablo şablonu için bir tablo devre dışı bırakılması, bir örnek için bkz.

-- ===============================================
-- Disable a Capture Instance for a Table template 
-- ===============================================
USE MyDB
GO
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name   = N'MyTable',
@capture_instance = N'dbo_MyTable'
GO

Ayrıca bkz.

Kavramlar

Veri değişiklikleri izle

Değişiklik veri yakalama hakkında

Değişiklik veri ile çalışmak

Yönetme ve izleme verisini Değiştir yakalama