Aracılığıyla paylaş


Değişiklik veri yakalama temelleri

Değişiklik veri yakalama kayıt eklemek, güncelleştirmek ve silmek için uygulanan bir etkinlik bir SQL Server tablo.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 veriler için değiştirilen satırların yakalanan ve izlenen kaynak tablo sütun yapısını yansıtan değişiklik tablolarda depolanan.Tablo değerli işlevler sistematik Değiştir veri erişimine izin vermek için tüketiciler tarafından sağlanır.

Bir iyi bu teknoloji tarafından hedeflenen bir veri tüketici bir ayıklama, dönüştürme ve yükleme (etl) uygulama örneğidir.etl uygulama artımlı değişiklik veri yükler SQL Server kaynak veri ambarı tablolara veya veri reyonu.Kaynak tablolar veri ambarı ambar içinde sunumunu kaynak tablolarda değişiklikleri yansıtması gerekir, ancak bir uçtan uca teknoloji, yeniler bir çoğaltma kaynağını uygun değil.Instead, you need a reliable stream of change data that is structured so that consumers can apply it to dissimilar target representations of the data.SQL Server change data capture provides this technology.

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

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

Asıl veri akışı Değiştir veri yakalama için aşağıdaki resimde gösterilmektedir.

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

Değişiklik veri yakalama Değiştir veri kaynak SQL Server işlem Kütük'üEkler, güncelleştirmeleri ve silmeleri izlenen kaynak tablolarına uygulandığı gibi bu değişiklikleri açıklayan girdiler günlüğüne eklenir.Değişiklik veri yakalama yakalama işlemi için giriş günlüğü görür. Bu günlük okur ve izlenen değişiklikler hakkında bilgi ekler tablodeğişiklik ilişkili tablo.İşlevleri sağlanan bilgileri formda bir filtre uygulanmış olarak döndüren bir belirtilen aralık içinde değişiklik tablolarda görünen değişiklikler numaralandırmak için en sonuç küme.Filtre uygulanmış bir sonuç küme 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

Bir veritabanı içinde her bir tablo için değişiklikleri izlenen önce değişiklik veri yakalama açıkça veritabanı için etkinleştirilmiş olması gerekir.Bu saklı yordam kullanarak yapılır sys.sp_cdc_enable_db.Veritabanı etkin olduğunda, kaynak tablolar izlenen tabloları olarak saklı yordam kullanarak belirlenebilir sys.sp_cdc_enable_table.Tablo Değiştir veri yakalama için etkin olduğunda, kaynak tablosunda değişiklik veri dağıtımını desteklemek için bir ilişkili yakalama örnek oluşturulur.Yakalama örnek değişikliği oluşur tablo ve en fazla iki sorgu işlevler.Yakalama örnek yapılandırma ayrıntılarını açıklayan meta veriler Değiştir veri yakalama meta veriler tablolarında tutulan cdc.change_tables, cdc.index_columns, ve cdc.captured_columns.Saklı yordam kullanarak bu bilgileri elde edilebilir sys.sp_cdc_help_change_data_capture.

Bir yakalama ile ilişkili olan tüm nesneleri örnek etkin veritabanı Değiştir veri yakalama şemada oluşturulur.Yakalama örnek adı için gereksinimleri, geçerli bir ad olması ve onu veritabanı yakalama örneği arasında benzersiz olması.Varsayılan olarak,. <şema adı_Tablo adı> kaynak tablonun.Onun ilişkili değişiklik tablo ekleyerek adlı CT Yakalama örneğinin adı.İçin kullanılan işlev için tüm değişiklikleri sorgu tarafından prepending adlı fn_cdc_get_all_changes için yakalama örnek adı.Yakalama örnek destekleyecek şekilde yapılandırılmışsa, net changes, net_changes sorgu işlev de oluşturulur ve adlandırılır prepending tarafından fn_cdc_get_net_changes_ Yakalama örneğinin adı.

Tabloyu Değiştir

İlk beş değişiklik veri yakalama Değiştir tablo sütunları meta veriler sütunları olan.Bunlar, kaydedilen değişiklikleri ile ilgili ek bilgi sağlar.Kaynak tablo adı ve, genellikle, tür tanımlanan yakalanan sütunları kalan sütunları yansıtır.Yakalanan sütun veri kaynağından toplanan bu sütunların basılı tablo.

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ünür.Satırın veri sütunlarını, sonuçlar bir INSERT işleminden sonra INSERT sütun değerlerini içerir.Satırın veri sütunlarını, sonuçlar silme işleminden önce Sil sütun değerlerini içerir.Güncelleştirme işlemi tanımlamak sütun değerlerini güncelleştirme öncesinde bir satır entryto ve güncelleştirme sonrasında sütun tanımlamak için ikinci bir satır giriş değerleri gerektirir.

Her satırda bir değişiklik tablo de değişiklik etkinliği yorumunu izin vermek için ek meta veriler içerir.Sütun __$start_lsn tanımlayan yürütme günlük sıra numarası (SSN) değişiklik atandıSSN yürütme hem aynı işlem içinde kaydedilmiş değişiklikleri tanımlar ve bu hareketlere orders.Sütun __$seqval için sipariş daha fazla değişiklikler ortaya aynı hareket.Sütun __$operation değişiklik ile ilişkili olan işlemi kaydeder: 1 silme, 2 = INSERT, 3 = güncelleştirme öncesinde (görüntü) ve 4 = Güncelleştirme (görüntü sonra) =.Sütun __$update_mask olduğu için her yakalanan sütun tanımlanmış bir bit ile değişken bit maskesiİçin INSERT ve delete girişleri, güncelleştirme maskeyi her zaman tüm bitleri olması küme.Satır güncelleştirme, ancak yalnızca bitlerinin değişen sütun karşılık gelen küme vardır.

Geçerlilik aralığı için bir veritabanı Değiştir veri yakalama

Veritabanı Değiştir veri yakalama geçerlilik aralığı olan saat sırasında hangi değişiklik veri yakalama örnekleri için kullanılabilir.İlk yakalama örnek için bir veritabanı tablosu oluşturulur ve geçerli eder geçerlilik aralığı başlar saat.

Değişiklik tablolarda konduktan veri unmanageably, düzenli ve sistematik veri buda değil, büyüyecektir.Değişiklik veri yakalama temizleme işlemini temizleme saklama tabanlı ilke zorlamaktan sorumludur.İlk olarak, saat kısıtlaması karşılamak için geçerlilik aralığının düşük bitiş noktası taşır.Daha sonra onu removrd değişiklik süresi tablo girdi.Varsayılan olarak, veri üç gün içinde korunur.

Yüksek sonunda yakalama işlemi her değişikliği veri yeni bir toplu iş iş işlemi tamamlar yeni girişler eklenir cdc.lsn_time_mapping her hareket olan değişikliği Tablo girdileri.Eşleme içinde tablo, bir yürütme günlük sıra numarası (SSN) hem de bir hareket yürütme saat (sütun start_lsn ve tran_end_time, sırasıyla) korunur.İçinde bulunan en fazla SSN değeri cdc.lsn_time_mapping temsil eden yüksek su işareti veritabanı geçerlilik pencere.Kendi karşılık gelen yürütme saat içinden yeni bir düşük su işareti temel koruma temizleme hesaplar temel olarak kullanılır.

Hareket günlüğü'nden veri yakalama işlemi ayıklar değiştirme nedeni yoktur yerleşik bir değişiklik için bir kaynak tablo kararlıdır saat ve onun ilişkili değişiklik tablonun içinde değişiklik görünen saat arasındaki gecikme saat.Bu gecikme süresi genellikle küçük olsa da, yine de yakalama işlemini ilgili günlük girdilerini işleyene kadar değişiklik veri kullanılamaz olduğunu hatırlamak önemlidir.

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

Bu veritabanı geçerlilik aralığı ve geçerlilik aralığı çakıştığı için tek tek yakalama örnek için ortak olsa da, bu her zaman geçerli değildir.Yakalama işlemi yakalama örnek tanır ve onun tablo Değiştir ilişkili değişiklikler oturum başlatır, yakalama örneğinin geçerlilik aralığı başlar.Yakalama örnekleri farklı zamanlarda oluşturduysanız, sonuç olarak, her başlangıçta farklı düşük bitiş noktası olacaktır.The start_lsn column of the result set that is returned by sys.sp_cdc_help_change_data_capture shows the current low endpoint for each defined capture instance.Temizleme işleminin ne zaman temizler değişimi oluşturan tablo girişleri, bu ayarlar start_lsn değerleri yansıtacak yeni düşük su tüm yakalama örnekleri için işaretlemek için kullanılabilir değişiklik veri.Yalnızca yakalama örnekleri olan start_lsn , daha yeni düşük su işareti şu an az değerler ayarlandı.Yeni yakalama örnekleri oluşturduysanız, saat içinde tek tek tüm örnekleri için geçerli tarih aralıklarını veritabanı geçerlilik aralığı ile çakıştığı eğilimindedir.

Ayıklama aralığı bir istek için tam olarak yakalama örnek için geçerli değişiklik veri yakalama geçerlilik aralığı kapsamında olmalıdır 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ı soluna ise, ısrarlı temizleme yüzünden Değiştir 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 üzerinden işlediği değil saat dönemi, temsil ayıklama aralığı tarafından ve değiştirme verileri de eksik olabilir.

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

Kaynak tablolar için değişiklikleri işleme

Uyum sağlayacak sütun izlenen kaynak tablolarda değişiklikleri akış aşağı Tüketiciler için zor bir sorun olduğunu.Kaynak tablo üzerinde değişiklik veri yakalama etkinleştirilmesi gibi ddl değişiklikleri ortaya çıkmasını engellemez, ancak temel kaynak tablo sütun yapısını değiştirir gibi kalması için API döndürülen teslim edilen sonuç kümelerini sağlayarak tüketiciler üzerindeki etkisini azaltmak için değişiklik veri yakalama yardımcı olur değişmeden.Bu sabit sütun yapısı da temel değişikliği yansıtılır tablo tanımlanan sorgu erişim işlevleri.

Sabit sütun yapısı değişikliği tablo yapabilmek için sorumlu değişikliği tablo doldurmak için yakalama işlemi yakalama için tanımlanan kaynak tablo Değiştir veri yakalama için etkinleştirildiğinde, yeni sütunlar göz ardı eder.İzlenen bir sütun kesilirse, null değerler sütununda sonraki değişiklik girişleri için sunulacaktır.Ancak, varolan bir sütun veri türü değişikliği geçer, yakalama mekanizması izlenen sütunlara veri kaybı sunmaz emin olmak için tablo değiştir değişiklik yayılır.Yakalama işlemi cdc.ddl_history tablo izlenen tabloya sütun yapısını algılanan değişiklikler de nakleder.Aşağı akım uygulamalarında yapılması gerekebilir ayarlamalarının uyarı almak isteyen tüketiciler kullanmak saklı yordam sys.sp_cdc_get_ddl_history.

Tipik olarak, geçerli yakalama örnek için ilişkili kaynak tablo uygulanan ddl değişiklikleri, nesnenin şeklini korumak devam edecektir.Ancak, ikinci bir yakalama örnek için yeni sütun yapısını yansıtan tablo oluşturmak mümkündür.Bu yakalama işlemi iki farklı sütun yapıya sahip tabloları değiştirmek aynı kaynak tablo halinde iki ayrı değişiklik yapmayı sağlar.Bu nedenle, ikinci tablo Değiştir geçerli çalışma programları Özet akışı devam edebilirsiniz, ancak yeni sütun verileri birleştirmek için çalışıyor bir geliştirme ortamı sürücü.Vererek art arda iki değişiklik tabloları doldurmak için yakalama mekanizması anlamına gelir Değiştir veri kaybı olmadan bir diğerine geçiş yapılabilir.Bu iki veri yakalama saat çizelgeleri değiştirmek istediğiniz saat gerçekleşebilir.Geçiş parametreden etkilenir, eski yakalama örnek kaldırılabilir.

Not

En fazla eşzamanlı bir tek kaynak tablo ile ilişkili olabilir yakalama örnekleri iki sayısıdır.

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

Değişiklik veri yakalama işlemi katıştırılan mantığı saklı yordam sp_replcmds, bir iç sunucu işlev sqlservr.exe parçası olarak yerleşik ve işlem günlüğü değişikliklerden Hasat için de işlem çoğaltma tarafından kullanılır.Bir veritabanı için tek başına bir değişiklik veri yakalama etkin olduğunda, sql Server Agent yakalama iş sp_replcmds baþlatmak için araç olarak değiştir veri yakalama oluşturun.Çoğaltma ayrıca olmadığı durumlarda tek başına işlem logreader ikisi bu Tüketiciler için değişiklik veri gereksinimlerini karşılamak için kullanılır.Aynı veritabanı için çoğaltma hem değişiklik veri yakalama etkin olduğunda bu strateji günlük çekişme önemli ölçüde azaltır.

Veritabanı Değiştir veri çoğaltma durumunu değiştir veri yakalama içinde değişiklik yapıldığında otomatik olarak oluşur yakalamak için bu iki çalışma modları arasında geçiş etkin.

Önemli notÖnemli

İki örneği de yakalama mantığı gerektiren SQL Server Aracısı işlemi yürütmek çalışıyor.

İlgili bilgileri değişiklik veri yakalama Değiştir tablolar için asıl görevi değişiklik veri yakalama yakalama günlük tarama ve sütun veri ve işlem yazma işlemidir.ETE sınır tüm değişiklik onu dolduran veri yakalama Değiştir tablolar emin olmak için yakalama işlemi açılır ve her tarama döngüsü üzerinde kendi hareketi tamamlar.Yeni değişiklik veri yakalama için etkinleştirilmiş tablolar algılar ve otomatik olarak bunları içeren küme günlük girdilerinde değişiklik için etkin olarak izlenen bir tablo.Benzer şekilde, verilerini Değiştir devre dışı bırakma yakalama Ayrıca, kaynak tablo alanından kaldırılacak neden algılanacaktır küme tablo Değiştir veri için etkin olarak izlenmekte.İşlem günlük bölümü sona erdiğinde kesilmesi için uygun günlük girdileri tanımlamak için bu bilgileri kullanır sunucu günlük kesilme mantığı yakalama işlemini sinyal gönderir.

Not

Yakalama için işaretlenen tüm değişiklikleri yakalama işlemi tarafından toplanan kadar basit kurtarma modeline günlük kesilme noktası kurtarma moduna küme olsa bile, bir veritabanı Değiştir veri yakalama için etkin olduğunda ilerleyecektir değil.Yakalama işlemi çalışır durumda ve toplanan için değişiklikler varsa, denetim noktası yürütme günlüğü kesemez.

Yakalama işlemi de korumak için kullanılan geçmiş üzerinde ddl değişiklikleri izlenen tablolar için.Değişiklik veri yakalama ile ilişkilendirilmiş ddl deyimleri veritabanı işlem günlüğünün bir değişiklik veri yakalama etkin veritabanı her giriş yapabilmeniz veya tablo bırakılan veya değişiklik veri yakalama etkin bir tablonun sütunları eklediyseniz, değiştirilmiş veya bırakılan.Bu günlük girdileri cdc.ddl_history ilişkilendirilmiş ddl olayları deftere nakleder yakalama işlemi tarafından işlenen tablo.Saklı yordam kullanarak izlenen tabloları etkileyen ddl olayları hakkında bilgi edinebilirsiniz sys.sp_cdc_get_ddl_history.

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

İki SQL Server değişiklik veri yakalama etkin veritabanı ile ilişkili olan Aracısı işleri: bir veritabanı değişiklik tabloları doldurmak için kullanılan, diğeri de sorumlu olduğu Tablo Temizleme değiştirin.Hem işleri çalışan tek adımlı bir bileşiminden bir Transact-SQL komut.The Transact-SQL command that is invoked is a change data capture defined stored procedure that implements the logic of the job.İşler ne zaman oluşturulan ilk tablo veritabanı Değiştir veri yakalama için etkin.Temizleme işi her zaman oluşturulur. Yakalama iş yalnızca veritabanı için tanımlanmış hiçbir işlem yayımları varsa oluşturulur.Her ikisi de veri yakalama Değiştir yakalama işi de oluşturulur ve işlem çoğaltma bir veritabanı için etkinleştirilir ve veritabanı yayınları artık tanımladığı çünkü logreader işlem iş kaldırılır.

Yakalama ve temizleme işlerini varsayılan parametreleri kullanılarak oluşturulur.Yakalama iş hemen başladı.Maksimum tarama döngüsü başına 1000 hareket döngüleri arasında 5 saniyelik bir bekleme ile işleme sürekli olarak çalışır.Temizleme iş de çalışır her gün 2 saat de4320 Dakika değişikliği Tablo girdileri saklı tutar veya delete deyim 5000 girişleri tek bir maksimum kaldırma 3 gün.

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şi de ilk yayın bir veritabanına eklenir ve her ikisi de veri yakalama değiştirmek kaldırılabileceği işlemsel ve çoğaltma etkinleştirilir.

Değişiklik veri yakalama Aracısı işleri dahili olarak 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şturulmasını ve bu işleri kaldırılmasını böylece bu saklı yordamları da sunulur.

Yönetici varsayılan yapılandırma, değişiklik veri yakalama Aracısı işleri üzerinde açık denetimi yoktur.Saklı yordam sys.sp_cdc_change_job varsayılan yapılandırma parametrelerinin değiştirilmesine olanak sağlanır.Buna ek olarak, saklı yordam sys.sp_cdc_help_jobs görüntülenmesi geçerli yapılandırma parametreleri sağlar.Yakalama iş hem temizleme işi ayıklamak tablo msdb.dbo.cdc_jobs başlangıçta yapılandırma parametrelerinden.Bu değerleri kullanılarak yapılan herhangi bir değişiklik sys.sp_cdc_change_job iş durdurulup yeniden başlatılana kadar etkili olmayacak.

Başlatıldığında ve durdurulduğunda Değiştir veri yakalama Aracısı işleri izin vermek için iki ek saklı yordamlar sağlanmaktadır: sys.sp_cdc_start_job ve sys.sp_cdc_stop_job.

Not

Başlatma ve durdurma yakalama iş Değiştir veri kaybına yol açmaz.Yalnızca değişiklik tablolarda yatırmak değişiklik girişleri için günlüğü etkin olarak tarama yakalama işlemini engeller.Yakalamayı durdurmak için iş dönemlerinde yoğun talebin load ekleme tarama günlüğü önlemek için makul bir strateji iş ve talep azaldığında yeniden başlatın.

Her ikisi de SQL Server Aracısı işleri esneklikte ve değişiklik veri yakalama ortamları temel gereksinimlerini yeterli düzeyde yapılandırılabilir olması için tasarlanmışDaha fazla özelleştirme mümkün olan her iki durumda da, Bununla birlikte, çekirdek işlevler sağlayan temel saklı yordamlar karşılaştıklarını.