Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
Bu makalede, SQL Server ve Azure SQL Yönetilen Örneği için veritabanı ve tablo için değişiklik veri yakalamasını (CDC) etkinleştirme ve devre dışı bırakma işlemleri açıklanmaktadır. Azure SQL Veritabanı için, Azure SQL Veritabanı ile CDC ve'ye bakın.
İzinler
SQL Server ve Azure SQL Yönetilen Örneği'nde değişiklik veri yakalamayı etkinleştirmek veya devre dışı bırakmak için sysadmin izinleri gereklidir.
Veritabanı için etkinleştirme
Tek tek tablolar için yakalama örneği oluşturabilmeniz için önce veritabanı için değişiklik verilerini yakalamayı etkinleştirmeniz gerekir.
Veritabanı bağlamında değişiklikleri yakalamayı etkinleştirmek için, sys.sp_cdc_enable_db (Transact-SQL) saklı yordamını çalıştırın. Bir veritabanında CDC'nin etkin olup olmadığını belirlemek için sys.databases katalog görünümündeki is_cdc_enabled sütununu sorgular.
Veritabanında değişiklik veri yakalama etkinleştirildiğinde, cdc şeması, cdc kullanıcısı, meta veri tabloları ve diğer sistem nesneleri veritabanı için oluşturulur. cdc şeması, değişiklik verileri yakalama meta veri tablolarını içerir ve kaynak tablolar değişiklik verilerini yakalamak için etkinleştirildikten sonra, tek tek değişiklik tabloları değişiklik verileri için bir depo görevi görür. cdc şeması, değişiklik verilerini sorgulamak için kullanılan ilişkili sistem işlevlerini de içerir.
Değişiklik veri yakalama, cdc şemasının ve cdc kullanıcısının özel olarak kullanılmasını gerektirir. Şu anda bir veritabanında cdc adlı bir şema veya veritabanı kullanıcısı varsa, şema ve/veya kullanıcı bırakılana veya yeniden adlandırılana kadar veritabanı için değişiklik verileri yakalama etkinleştirilemiyor.
-- ====
-- Enable Database for CDC
-- ====
USE MyDB
GO
EXEC sys.sp_cdc_enable_db
GO
Not
SQL Server Management Studio'da CDC ile ilgili şablonları bulmak için Görünüm'ne gidin, şablon gezgini seçin ve ardından sql server şablonları seçin. Veri yakalamayı değiştirme şablonları içeren bir alt klasördür
Veritabanı için devre dışı bırak
Veritabanı bağlamında sys.sp_cdc_disable_db (Transact-SQL) kullanarak veritabanı için değişiklik verilerini yakalamayı devre dışı bırakın. Veritabanı için CDC'yi devre dışı bırakmadan önce tek tek tablolar için CDC'yi devre dışı bırakmanız gerekmez. Veritabanı için CDC'nin devre dışı bırakılması, cdc kullanıcısı, şeması ve değişiklik verilerini yakalama görevleri de dahil olmak üzere tüm ilişkili değişiklik veri yakalama meta verilerini kaldırır. Ancak, CDC tarafından oluşturulan tüm gating rolleri otomatik olarak kaldırılmaz ve açıkça silinmesi gerekir. Bir veritabanında CDC'nin etkinleştirilip etkinleştirilmediğini belirlemek için sys.databases katalog görünümünde is_cdc_enabled sütununu sorgular.
CDC özellikli bir veritabanı bırakılırsa değişiklik verisi yakalama işleri otomatik olarak kaldırılır.
-- Disable Database for change data capture
USE MyDB
GO
EXEC sys.sp_cdc_disable_db
GO
Tablo için etkinleştir
Veritabanı değişiklik verisi yakalama için etkinleştirildikten sonra, db_owner sabit veritabanı rolünün üyeleri sys.sp_cdc_enable_tablesaklı yordamını kullanarak tek tek kaynak tablolar için bir yakalama örneği oluşturabilir. Kaynak tablonun değişiklik verisi yakalama için zaten etkinleştirilip etkinleştirilmediğini belirlemek için, sys.tables katalog görünümündeki is_tracked_by_cdc sütununu inceleyin.
Önemli
sys.sp_cdc_enable_table saklı yordam bağımsız değişkenleri hakkında daha fazla bilgi için bkz. sys.sp_cdc_enable_table (Transact-SQL).
Yakalama örneği oluşturulurken aşağıdaki seçenekler belirtilebilir:
Kaydedilecek kaynak tablodaki sütunlar.
Varsayılan olarak, kaynak tablodaki tüm sütunlar yakalanan sütunlar olarak tanımlanır. Gizlilik veya performans nedeniyle gibi yalnızca bir sütun alt kümesinin izlenmesi gerekiyorsa, sütunların alt kümesini belirtmek için @captured_column_list parametresini kullanın.
Değişiklik tablosunu içerecek bir dosya grubu .
Varsayılan olarak, değişiklik tablosu veritabanının varsayılan dosya grubunda bulunur. Tek tek değişiklik tablolarının yerleşimini denetlemek isteyen veritabanı sahipleri, yakalama örneğiyle ilişkili değişiklik tablosu için belirli bir dosya grubu belirtmek üzere @filegroup_name parametresini kullanabilir. Adlandırılmış dosya grubu zaten var olmalıdır. Genellikle, değişiklik tablolarının kaynak tablolardan ayrı bir dosya grubuna yerleştirilmesi önerilir. Dosya Grubu Seçeneğini Belirten Bir Tabloyu Etkinleştirme şablonuna, @filegroup_name parametresinin kullanımını gösteren bir örnek için bakın.
-- Enable CDC for a table specifying filegroup
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
Değişiklik tablosuna erişimi denetleme rolü.
Adlandırılmış rolün amacı, değişiklik verilerine erişimi denetlemektir. Belirtilen rol mevcut bir sabit sunucu rolü veya veritabanı rolü olabilir. Belirtilen rol henüz yoksa, bu adın veritabanı rolü otomatik olarak oluşturulur. Kullanıcıların kaynak tablonun yakalanan tüm sütunlarında SELECT iznine sahip olmalıdır. Ayrıca, bir rol belirtildiğinde, sysadmin veya db_owner rolünün üyesi olmayan kullanıcıların da belirtilen rolün üyesi olması gerekir.
Bir gating rolü kullanmak istemiyorsanız, @role_name parametresini açıkça NULL olarak ayarlayın. Örnek olarak, bir tabloyu bir gating rolü kullanmadan etkinleştirme sürecini görmek için Gating Rolü Kullanmadan Tabloyu Etkinleştirme şablonuna bakın.
-- Enable CDC for a table using a gating role option
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
Net değişiklikleri sorgulamak için bir işlev.
Yakalama örneği, tanımlı bir aralık içinde gerçekleşen tüm değişiklik tablosu girdilerini döndürmek için her zaman tablo değerli bir işlev (TVF) içerir. Bu işlev, yakalama örneği adının 'cdc.fn_cdc_get_all_changes_' ifadesine eklenmesiyle adlandırılır. Daha fazla bilgi için bkz. cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL).
parametre @supports_net_changes 1 olarak ayarlanırsa, yakalama örneği için bir net changes işlevi de oluşturulur. Bu işlev, çağrıda belirtilen aralıkta değiştirilen her ayrı satır için yalnızca bir değişiklik döndürür. Daha fazla bilgi için bkz. cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL).
Net değişiklik sorgularını desteklemek için, kaynak tablonun satırları benzersiz olarak tanımlamak için birincil anahtarı veya benzersiz dizini olmalıdır. Benzersiz bir dizin kullanılırsa, dizinin adı @index_name parametresi kullanılarak belirtilmelidir. Birincil anahtarda veya benzersiz dizinde tanımlanan sütunlar, yakalanacak kaynak sütunlar listesine eklenmelidir.
Her iki sorgu işleviyle de yakalama örneği oluşturmayı gösteren bir örnek için Tüm Ve Net Değişiklik Sorguları için Tablo Etkinleştirme şablonuna bakın.
-- Enable CDC for a table for all and net changes queries
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 verisi yakalama, var olan bir birincil anahtara sahip bir tabloda etkinleştirilirse ve @index_name parametresi alternatif bir benzersiz dizini tanımlamak için kullanılmazsa, değişiklik verileri yakalama özelliği birincil anahtarı kullanır. Tablo için değişiklik verileri yakalama devre dışı bırakılmadıkça, birincil anahtarda yapılan sonraki değişikliklere izin verilmez. Değişiklik veri yakalama yapılandırıldığında net değişiklik sorguları için destek istenip istenmediğine bakılmaksızın bu durum geçerlidir. Değişiklik verisi yakalama için etkinleştirildiği sırada bir tabloda birincil anahtar yoksa, birincil anahtarın daha sonra eklenmesi değişiklik veri yakalaması tarafından yoksayılır. Değişiklik verisi yakalama, tablo etkinleştirildikten sonra oluşturulan birincil anahtarı kullanmayacağından, anahtar ve anahtar sütunları kısıtlama olmadan kaldırılabilir.
Tablo için devre dışı bırak
sabit veritabanı rolünün db_owner üyeleri, saklı yordamı sys.sp_cdc_disable_tablekullanarak tek tek kaynak tablolar için yakalama örneğini kaldırabilir. Kaynak tablonun şu anda değişiklik verisi yakalama için etkinleştirilip etkinleştirilmediğini belirlemek için sys.tables katalog görünümündeki is_tracked_by_cdc sütununu inceleyin. Devre dışı bırakma işlemi gerçekleştikten sonra veritabanı için etkinleştirilmiş tablo yoksa değişiklik verileri yakalama işleri de kaldırılır.
Veri yakalama özellikli bir değişiklik tablosu bırakılırsa, tabloyla ilişkili değişiklik veri yakalama meta verileri otomatik olarak kaldırılır.
Tabloyu devre dışı bırakma örneği görmek için bir tablo için yakalama örneğini devre dışı bırakma şablonuna bakın.
-- Disable a Capture Instance for a table
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.
- Veri Değişikliklerini İzleme (SQL Server)
- Değişiklik veri yakalama (SQL Server) hakkında
- Değişiklik Verileriyle Çalışma (SQL Server)
- Değişiklik Veri Yakalamayı (SQL Server) Yönetme ve İzleme