Değişiklik veri yakalama hakkında

Değişiklik veri yakalama kayıt ekleme, güncelleştirme ve uygulanan aktiviteyi silmek a SQL Servertablosu. Bu değişikliklerin ayrıntılarını kolayca tüketilen ilişkisel bir biçimde kullanılabilmesini sağlar. Sütun bilgileri ve değişiklikleri uygulamak için bir hedef ortamı için gerekli olan meta verileri değiştirilen satırlar için yakalanan ve izlenen kaynak tablo sütun yapısını yansıtan değişiklik tablolarda depolanan. Tablo değerli işlevler, tüketiciler tarafından sistematik değişiklik veri erişmesine izin vermek için sağlanır.

Bu teknoloji ile hedeflenen veri tüketici iyi bir örnektir, bir ayıklama, dönüştürme ve yükleme (etl) uygulama olduğunu. etl uygulama artımlı değişiklik veri yükler SQL Serverkaynak bir veri ambarı ya da veri tabloları mart. Kaynak tablolar içinde veri ambarına gösterimini kaynak tabloları değişiklikleri yansıtmak gerekir, ancak kaynak çoğaltmasını yeniler bir uçtan uca teknoloji uygun değil. Bunun yerine, güvenilir böylece tüketiciler bu verileri birbirine benzemeyen hedef gösterimleri için uygulayabilirsiniz yapısal değişiklik veri akışı gerekir. SQL Serverdeğişiklik veri yakalama, bu teknolojiyi sağlar.

Veri akışı verisini Değiştir yakalama

Değişiklik veri yakalama asıl veri akışı aşağıda gösterilmiştir.

Değişiklik verilerini yakalama veri akışı

Değişiklik veri yakalama Değiştir veri kaynağı SQL Serverhareket \Kütüğü Ekler, güncelleştirmeleri ve silmeleri izlenen kaynak tablolara uygulanır, bu değişiklikleri açıklayan girdiler günlüğüne eklenir. Günlük giriş yakalama işlemi olarak hizmet vermektedir. Bu günlük okur ve değişiklikler hakkındaki bilgiler izlenen tablonun ilişkili değişiklik tabloya ekler. İşlevleri üzerinde süzülen sonuç kümesi şeklinde bilgi döndüren, belirli bir aralıkta değişiklik tablolarda görünen değişiklikler numaralandırmak için sağlanır. Filtre uygulanan sonuç kümesi genellikle bazı dış ortamda kaynak gösterimi güncelleştirmek için bir uygulama işlemi tarafından kullanılır.

Değişiklik veri yakalama ve yakalama örneği anlama

Önce bir veritabanı içinde her bir tablo için değişiklikleri izlenebilir, değişiklik veri yakalama için veritabanını açıkça etkinleştirilmelidir. Bu saklı yordam kullanarak yapılır sys.sp_cdc_enable_db. Veritabanı etkin olduğunda, kaynak tablolar izlenen tabloları olarak saklı yordam kullanarak tanımlanabilir sys.sp_cdc_enable_table. Tablo Değiştir veri yakalama için etkin olduğunda, ilgili yakalama örneği kaynak tablosunda değişiklik veri dağıtımını desteklemek için oluşturulur. Değişikliği tablo ve iki sorgu işlevleri için yakalama örneği oluşur. Yakalama örneği yapılandırma ayrıntılarını açıklayan meta verileri korunur değişiklik veri yakalama meta veri tablolarında cdc.change_tables, cdc.index_columns, ve cdc.captured_columns. Saklı yordam kullanarak bu bilgileri alınabilir sys.sp_cdc_help_change_data_capture.

Bir yakalama örneğiyle ilişkili olan tüm nesneleri etkin veritabanı Değiştir veri yakalama şemada oluşturulur. Yakalama örneği adı gereksinimleri geçerli nesne adı olmasını ve bu veritabanı yakalama örneği arasında benzersiz olduğunu. Varsayılan, <schema name_ table name> kaynak tablo. Onun ilişkili değişiklik tablonun ekleyerek adlı _CTyakalama örneği adı. İçin kullanılan işlev için tüm değişiklikleri sorgu adlı imi tarafından fn_cdc_get_all_changes_yakalama örneği adı. Yakalama örneği destekleyecek şekilde yapılandırılmışsa, net changes, net_changesişlevi de oluşturulur ve indirdiğiniz tarafından adlandırılmış sorgu fn_cdc_get_net_changes_yakalama örneği adı.

Tabloyu Değiştir

İlk beş sütunu Değiştir veri yakalama Değiştir tablo meta veri sütunları vardır. Bunlar kaydı değiştirmek için ilgili ek bilgi sağlar. Kalan sütunları kaynak tablo adı ve genellikle de türü tanımlanan Yakalanan sütunları ayna. Bu sütunlar, yakalanan sütun veri kaynak tablosundan toplanan tutun.

Her ekleme ya da silme işlemi uygulanan bir kaynak için tablo değişikliği tablo içinde tek bir satır olarak görüntülenir. Veri sütunlarını ekleme işlemi sonuç satır, sonra eklemek için sütun değerlerini içerir. Bir silme işleminin sonuçlarını satır veri sütunları önce Sil sütun değerlerini içerir. Güncelleştirme işlemi sütun değerlerini güncelleştirme öncesinde tanımlamak için bir satır giriş ve güncelleme sonra sütun değerlerini tanımlamak için ikinci bir satır giriş gerektirir.

Bir değişiklik tablodaki her satır da yorumu değişiklik etkinliği sağlamak için ek meta veriler içerir. Sütun __$start_lsndeğiştirmek için atandığı tamamlama günlük sıra numarası (lsn) tanımlayan. Tamamlama lsn hem aynı işlem içinde kaydedilmiş değişiklikleri tanımlar ve bu hareketlere Siparişler. Sütun __$seqvalaynı işlemde oluşan daha değişiklikleri sipariş için kullanılabilir. Sütun __$operationdeğişikliği ile ilişkili işlem kayıtları: 1 = silme, 2 = INSERT, 3 = güncelleştirme (önce görüntü) ve 4 = güncelleştirme (sonra İmaj). Sütun __$update_maskise yakalanan her sütun için biraz değişken bit maskesi ile tanımlanmış bir. INSERT ve delete için girişleri, güncelleştirme maske her zaman olacak tüm bitlerin ayarlayın. Satırları güncelleştirmek, ancak yalnızca bu bit değiştirilen sütunları karşılık ayarladığınız.

Bir veritabanı için geçerlilik aralığı Değiştir veri yakalama

Veritabanı Değiştir veri yakalama geçerlilik aralığı sırasında hangi değişiklik veri yakalama örnekleri için kullanılabilir saattir. Geçerlilik aralığı başlar, ilk yakalama örneği için bir veritabanı tablosu oluşturulur ve şimdiki zaman için devam ediyor.

Eğer sizin düzenli ve sistematik bir şekilde veri budamak değil değişim tablolarında yatırılan veri EBM'lere büyüyecek. Değişiklik veri yakalama temizleme işlemi, Temizleme saklama tabanlı ilke zorlama için sorumludur. İlk, o zaman kısıtlaması karşılamak için geçerlilik aralığının düşük bitiş noktası taşır. Sonra süresi dolan değişikliği tablosu girdilerini kaldırır. Varsayılan olarak, veri üç gün korudu.

Yüksek sonunda olarak yakalama işlemini tamamlar her yeni toplu değişiklik veri, yeni girişler eklenir cdc.lsn_time_mappingdeğişikliği tablosu girdilerini olan her hareket için. Eşleştirme tablosu içinde hem bir tamamlama günlük sıra numarası (lsn) hem de bir hareket tamamlama süresi (sütun start_lsnve tran_end_time, sırasıyla) korunur. Bulunan en fazla lsn değeri cdc.lsn_time_mappingveritabanı geçerlilik penceresi yüksek su işareti gösterir. İlgili tamamlama zaman içinden yeni bir düşük su işareti saklama tabanlı Temizleme hesaplar temel olarak kullanılır.

Yakalama işlemi özler işlem günlüğünden veri değiştiği, orada yerleşik bir değişiklik için bir kaynak tablo kararlıdır Zamanı ve değişikliği ile ilişkili değişiklik tablonun içinde görüntülenen zaman arasındaki gecikme süresi. Bu gecikme süresi genellikle küçük olsa da, yine de yakalama işlemi ilgili günlük girdileri işleyene kadar değişiklik veri olmadığını unutmamak gerekir.

Yakalama örneği için geçerlilik aralığı Değiştir veri yakalama

Bu veritabanı geçerlilik aralığı ve tek tek yakalama örneği aynı tarihte geçerlilik aralığı için ortak olsa da, bu her zaman doğru değildir. Yakalama işlemi yakalama örneği tanır ve onun değişikliği tablo ilişkili değişiklikler oturum başlatır yakalama örneği geçerlilik aralığı başlar. Yakalama örnekleri farklı zamanlarda oluşturduysanız, bunun sonucunda, her başlangıçta farklı düşük bitiş noktası olacaktır. start_lsnYani sonuç sütunu tarafından döndürülen sys.sp_cdc_help_change_data_capture her tanımlanmış yakalama örneği için geçerli düşük bitiş noktası gösterir. Temizleme işlemi değişikliği tablosu girdilerini temizler, bu ayarlar start_lsndeğerler yeni düşük su yansıtacak şekilde tüm yakalama örnekleri için kullanılabilir Değiştir veri işareti. Yalnızca yakalama örnekleri var. start_lsnyeni düşük su markayı şu anda daha az olan değerler ayarlanır. Yeni yakalama örnekleri oluşturduysanız, zaman içinde veritabanı geçerlilik aralığı ile aynı tarihte tüm bireysel örnekleri geçerliliğini aralıklarını eğiliminde olacaktır.

Yakalama örneği için geçerli değişiklik veri yakalama geçerlilik aralığına göre tam bir istek için ayıklama aralığı kapsayacağı geçerlilik aralığı Değiştir veri tüketiciler için önemlidir. Orada ayıklama aralığının düşük bitiş noktası geçerlilik aralığının düşük bitiş noktası solunda ise, agresif Temizleme nedeniyle değişiklik veri eksik. Ayıklama aralığının yüksek bitiş noktası geçerlilik aralığının yüksek bitiş noktası sağında ise, yakalama işlemi henüz ayıklama aralığı tarafından temsil edilen süre boyunca işlediği değil ve değişiklik veri da eksik olabilir.

İşlev sys.fn_cdc_get_min_lsn olan yakalama örneği için geçerli en düşük lsn almak için kullanılan, süre sys.fn_cdc_get_max_lsn geçerli en fazla lsn değeri almak için kullanılır. Belirtilen lsn aralık içinde bu iki lsn değer bulunmayacak, değişiklik veri için sorgularken, değişiklik veri yakalama sorgu işlevleri başarısız olur.

Kaynak tablolar değişiklikleri işleme

Sütun değişikliklerini izleniyorsa kaynak tablolardaki karşılamak için aşağı tüketiciler için zor bir konu olduğunu. Bir kaynak tabloda veri yakalama Değiştir etkinleştirme gibi ddl değişiklikleri ortaya çıkmasını engellemez, ancak kaynak tablo sütun yapısı bile değiştikçe Değiştir veri yakalama yardımcı olmaya API verilen teslim edilen sonuç kümeleri vererek tüketiciler üzerindeki etkisini azaltmak için değişmeden kalır. Bu sabit sütun yapısı da temel değişim tablosunda tanımlanan sorgu erişim işlevleri yansıtır.

Sabit sütun yapısı değişikliği tablo yapabilmek için yakalama işlemi sorumlu değişikliği tablo doldurmamak için kaynak tablo için veri yakalama Değiştir etkinleştirildiğinde yakalama için tanımlanan değil yeni sütunlar göz ardı eder. İzlenen sütun kesilirse, sonraki değişiklik girişlerini sütunu null değerleri sağlanacaktır. Ancak, varolan bir sütunun veri türünü bir değişiklik uğrar, yakalama mekanizması veri kaybı izlenen sütunları tanıtmak değildir ki emin olmak için değişikliği tablo değişiklik yayılır. Yakalama işlemini de izlenen tablolar cdc.ddl_history tabloya sütun yapısı algılanan değişiklikler nakleder. Downstream uygulamalarında yapılan olabilir ayarlamalar hakkında uyarı almak isteyen tüketiciler kullanın saklı yordam sys.sp_cdc_get_ddl_history.

Tipik olarak, geçerli yakalama örneği, ilişkili kaynak tablo uygulanan ddl değişiklikleri zaman şekli korumak devam edecektir. Ancak, yeni sütun yapısını yansıtan tablo için ikinci yakalama örneği oluşturmak mümkündür. Bu iki farklı sütun yapıya sahip tabloları değiştirmek aynı kaynak tablo iki ayrı değişiklik yakalama işlemini sağlar. Böylece, bir değişikliği tablo mevcut operasyonel programlar beslemeye devam ederken, ikinci bir geliştirme ortamı yeni sütun veri birleştirmek için çalışıyor sürücü. Değiştir veri kaybı olmadan bir diğerine geçiş yapılabilir demektir Tandem iki değişiklik tabloları doldurmak için yakalama mekanizması sağlar. Bu iki veri yakalama zaman çizelgeleri değiştirmek her zaman olabilir. Ne zaman geçiş etkilenir, eski yakalama örneği kaldırılabilir.

[!NOT]

Aynı anda bir tek kaynak tablo ile ilişkili olabilir yakalama örnekleri sayısı iki olduğunu.

Yakalama iş ve işlem çoğaltma Logreader arasındaki ilişki

Mantık Değiştir veri yakalama işlemi için saklı yordam gömülü olduğu sp_replcmds, bir iç sunucu işlevi sqlservr.exe parçası olarak inşa edilmiş ve ayrıca işlem günlüğü değişiklikleri hasat için işlem çoğaltma tarafından kullanılır. Değişiklik veri yakalama yalnız bir veritabanı için etkinleştirildiğinde, SQL Server Agent yakalama iş sp_replcmds çağırma için araç olarak değişiklik veri yakalama oluşturun. Çoğaltma ayrıca varken, tek başına işlem logreader her ikisi de bu tüketicilerin Değiştir veri ihtiyaçlarını karşılamak için kullanılır. Bu strateji, aynı veritabanı çoğaltma ve değişiklik veri yakalama etkin olduğunda günlük çekişme önemli ölçüde azaltır.

Değişiklik değişiklik veri yakalama çoğaltma durumunu bir değişiklik olduğunda verileri otomatik olarak gerçekleşir yakalamak için bu iki operasyon modları arasında geçiş veritabanı etkin.

Önemli notÖnemli

Her iki örneğini yakalama mantığı gerektiren SQL ServerAracısı işlemini yürütmek çalışıyor.

Yakalama işlemi asıl görevi günlük tarama ve sütun veri ve ilgili işlem yazmaktır bilgilerini değiştir veri yakalama için Değiştir tablolar. Sonucuna tutarlı bir sınır tüm değişiklik veri yakalama Değiştir tablolar o dolduran sağlamak için yakalama işlemi açılır ve her tarama döngüsü kendi hareketi tamamlar. Bu tablolar yeni değişiklik veri yakalama için etkinleştirilmiş olan algılar ve otomatik olarak aktif günlük girdileri değişikliği izlenir tablolar kümesi içerir. Benzer şekilde, veri yakalama Değiştir devre dışı bırakma da, tablo Değiştir veri aktif olarak izlenen bir dizi kaldırılması kaynak tablo neden algılanacaktır. İşlem günlüğünün bir bölümün tamamlandığında, yakalama işlemi günlük girdilerini kesilmesi için uygun belirlemek için bu bilgileri kullanır sunucu günlük kesilme mantık, sinyalleri.

[!NOT]

Yakalama için işaretlenen tüm değişiklikler yakalama işlemi tarafından toplanmıştır kadar kurtarma modu için basit kurtarma günlüğü kesme noktası ayarlanmış olsa bile, bir veritabanı için veri yakalama Değiştir, etkinleştirildiğinde peşin olacak değil. Yakalama işlemi çalışmıyor ve elde edilebilir için değişiklikleri varsa, CHECKPOINT yürütme günlüğü kesilemiyor değil.

Yakalama işlemini de izlenen tablolara ddl değişiklikler Geçmişi korumak için kullanılır. ddl deyimleri değişiklik veri yakalama ile ilişkili veritabanı işlem günlüğünün her değişiklik veri yakalama etkin veritabanı girişlerini yapmak veya tablo bırakılan veya değişiklik veri yakalama etkin tablonun sütunları eklediyseniz, güncellenmiştir veya düştü. Bu günlük girdileri ilişkilendirilmiş ddl olayları cdc.ddl_history masaya mesaj yakalama işlemi tarafından işlenir. Saklı yordam kullanılarak izlenen tabloları etkileyen ddl olayları hakkında bilgi edinmek sys.sp_cdc_get_ddl_history.

Değişiklik veri yakalama Aracısı işleri

İki SQL ServerAracısı işleri genellikle değişiklik veri yakalama etkin veritabanı ile ilişkili: bir veritabanını doldurmak için kullanılan tabloları ve bir değişim tablosunu Temizleme sorumludur değiştirin. Hem işleri çalışan tek adımlı bir oluşur bir Transact-SQLkomut. Transact-SQLBir değişiklik veri yakalama iş mantığı uygulayan saklı yordamı tanımlı olduğundan çağrılan komut. İşleri, ilk tablonun veritabanı Değiştir veri yakalama için etkin olduğunda oluşturulur. Temizleme işi her zaman oluşturulur. Yakalama iş, yalnızca veritabanı için tanımlanmış hiçbir işlem yayınlar varsa oluşturulur. Yakalama iş, hem de veri yakalama değiştirmek ve işlem çoğaltma veritabanı için etkinleştirilir ve veritabanı artık yayınları tanımladığı çünkü işlem logreader iş kaldırıldığında da oluşturulur.

Hem yakalama ve temizleme işlerini, varsayılan parametreleri kullanılarak oluşturulur. Yakalama işlemi hemen başlatılır. Sürekli olarak en çok tarama döngüsü başına 1000 hareket döngüleri arasında 5 saniye bekleyin ile işleme çalıştırır. Temizleme işi günlük 2'de çalışır 4320 Dakika için değişikliği tablosu girdilerini tutar veya 3 gün, 5000 girişleri tek bir maksimum kaldırma delete deyimi.

Bir veritabanı için veri yakalama Değiştir devre dışı bırakıldığında, değişiklik veri yakalama Aracısı işleri kaldırılır. Yakalama iş de ilk yayın veritabanına eklenir ve değişiklik veri yakalama ve işlem çoğaltma etkin olduğunda kaldırılabilir.

İçten, değişiklik veri yakalama Aracısı işleri oluşturulur ve saklı yordamları kullanarak bırakılan sys.sp_cdc_add_job ve sys.sp_cdc_drop_job, sırasıyla. Yöneticiler oluşturma ve kaldırma bu işleri böylece bu saklı yordamları da maruz kalır.

Yönetici varsayılan yapılandırmasında değişiklik veri yakalama Aracısı işleri açık denetleyemez. Saklı yordam sys.sp_cdc_change_job varsayılan yapılandırma parametrelerinin değiştirilmesine olanak tanımak için sağlanmıştır. Ayrıca, saklı yordam sys.sp_cdc_help_jobs görüntülenecek geçerli yapılandırma parametreleri sağlar. Yakalama iş ve temizleme işi yapılandırma parametreleri tablo msdb.dbo.cdc_jobs başlangıçta ayıklayın. Bu değerler kullanılarak yapılan değişiklikler sys.sp_cdc_change_job iş durdurulup yeniden başlatılana kadar etkili olmayacaktır.

İki ek saklı yordamlar, değişiklik veri yakalama Aracısı işleri başlatıldığında ve durdurulduğunda olanak sağlanmaktadır: sys.sp_cdc_start_jobbir ve sys.sp_cdc_stop_jobbir.

[!NOT]

Başlatma ve durdurma yakalama iş değiştirme veri kaybına yol açmaz. Yalnızca etkin değişim tabloları yatırmak değişiklik girişlerini günlük tarama gelen yakalama işlemini engeller. Günlük yoğun talebin dönemlerde yük eklemelerini tarama önlemek için makul bir strateji yakalama işlemini durdurmak ve talep küçüldüğünde yeniden sağlamaktır.

Hem SQL Serveresneklikte olması için tasarlanmış Aracısı işleri ve karşılamak için yeterli düzeyde yapılandırılabilir temel değişiklik veri ortamlarında yakalama. Böylece daha fazla özelleştirme olası her iki durumda da, ancak çekirdek işlevler sağlayan temel saklı yordamlar maruz edilmiştir.

Ayrıca bkz.

Kavramlar

Veri değişiklikleri izle

Değişiklik veri yakalama devre

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

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