Aracılığıyla paylaş


Temel veri yakalama Değiştir

Değişiklik veri yakalama kayıtlarını eklemek, güncelleştirmek ve uygulanan bir aktiviteyi silme bir SQL Server TABLO. Bu değişikliklerin ayrıntılarını kolayca tüketilen ilişkisel biçimde kullanılabilir duruma getirir.Sütun bilgileri ve meta veriler için bir hedef ortam değişiklikleri uygulamak için gerekli değiştirilen satırları yakalanan ve izlenen kaynak tablo sütun yapısını yansıtmak değişiklik tablolarında depolanır.Tablo değerli işlev değişikliği verileri sistematik erişmesine izin vermek için Tüketici tarafından sağlanır.

Bu teknoloji tarafından hedeflenen bir veri tüketici, iyi bir örnek bir ayıklama dönüştürme ve uygulama (ETL) yükleniyor ' dir.ETL uygulama artımlı değişiklik veriler yükler. SQL Server Kaynak tablo veri veya veri reyonu. Kaynak çoğaltma yeniler bir uçtan uca teknolojisi, kaynak tablolar içinde veri ambarı sunumunu değişiklikleri Kaynak tablolardaki yansıtmalıdır olsa da, 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.

Yalnızca kuruluş, Developer ve deneme sürümlerini üzerinde değişiklik veri yakalama kullanılabilir SQL Server.

Veri akışı değişiklik veri yakalama

Aşağıdaki resimde değişiklik veri yakalama için birincil veri akışı gösterir.

Change data capture data flow

kaynak Değişikliği verisinde değişiklik veri yakalama için SQL Server işlem günlüğü. Ekler, güncelleştirmeleri ve silmeleri izlenen kaynak tablolarına uygulanır, bu değişiklikleri tanımlayan girişleri günlüğe eklenir.Yakalama değişiklik veri yakalama işlemi için giriş günlüğü görür.Bu günlük okur ve değişiklikler hakkındaki bilgileri, izlenen tablo çubuğundaki ilişkili değişiklik tablosuna ekler.Süzülmüş bir sonuç biçiminde bilgi döndüren belirtilen aralık üzerinde değişiklik tablolarda görünür değişikliklerin numaralandırmak için sağlanan işlevleri küme.Süzülmüş bir sonuç kümesi, genellikle bir gösterimini bazı dış ortam kaynağına güncelleştirmek için bir uygulama işlemi tarafından kullanılır.

Değiştir veri yakalama ve yakalama örnek'ni anlama

Izlenen değişiklikler, bir veritabanı içinde her bir tablo için önce değişiklik veri yakalama veritabanı için açıkça etkinleştirilmesi gerekir.Bu saklı yordam kullanarak yapılır sys.sp_cdc_enable_db.Veritabanı etkin olduğunda, kaynak tablolar izlenen bir tablo olarak saklı yordam kullanarak belirlenebilir sys.sp_cdc_enable_table.Bir tablo, değişiklik veri yakalama için etkinleştirildiğinde, ilişkili bir yakalama örnek yayma veri değişikliği kaynak tablosunda desteklemek için oluşturulur.Yakalama örneği değişikliği oluşur tablo ve en fazla iki sorgu işlevi.Yakalama örneğinin yapılandırma ayrıntıları açıklayan meta veriler, değişiklik veri yakalama meta veri tabloları korunur cdc.change_tables, cdc.index_columns, ve cdc.captured_columns. Bu bilgiler saklı yordamı kullanılarak alınabilir. sys.sp_cdc_help_change_data_capture.

Etkinleştirilen veritabanı değişiklik veri yakalama şemada bir yakalama örnek ile ilişkili olan tüm nesneler oluşturulabilir.Yakalama örnek adı için gereksinimleri, geçerli nesne bir adı olması ve bu veritabanı yakalama örneği arasında benzersiz olması.Varsayılan olarak, adı. <şema adı_Tablo adı> kaynak tablo.Ekleyerek, ilişkili değişikliği tablo adı _CT yakalama için örnek adı. Işlev için kullanılan olan tüm değişiklikler için bir sorgu tarafından prepending adlı fn_cdc_get_all_changes_ yakalama için örnek adı. Yakalama örneği destekleyecek şekilde yapılandırılırsa net changes, net_changes Sorgu işlev de oluşturulur ve prepending olarak adlandırılmış. fn_cdc_get_net_changes_ yakalama için örnek adı.

Değişiklik tablo

Ilk beş sütunları değiştirme veri yakalama değişiklik tablonun meta veriler sütunları ' dir.Bunlar, kaydedilmiş değişikliğin ilgili ek bilgi sağlar.Kalan sütunları, kaynak tablo adı ve genellikle türü tanımlı yakalanan sütunlarından yansıtabilirsiniz.Kaynak toplanan yakalanan sütun veri bu sütunların basılı tablo.

Her ekleme veya silme işlemi uygulanan değişiklik tablo içindeki tek bir satır olarak, tablo için bir kaynak görünür.Satırın veri sütunlarını, sonuçlar bir ekleme işleminden sonra ekleme sütun değerlerini içerir.Silme işleminin sonuçlarını satırın veri sütunları silme önce sütun değerlerini içerir.Bir güncelleştirme işlemi, bir satır entryto güncelleştirme önce sütun değerlerini belirlemek 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 aktivite yorumlayabilmek izin vermek için ek meta verilerler içerir.Sütun __ $ start_lsn değişikliği atandı yürütme günlük sıra numarası (SSN) tanımlar.yürütme SSN hem aynı işlem içinde kaydedilmiş olan değişiklikler tanımlar ve bu hareketlere siparişleri.Sütun __ $ seqval, aynı işlemde ortaya çıkan değişiklik sipariş etmek için kullanılabilir.Sütun __ $ işlem değişikliği ile ilişkili bir işlemi kaydeder: 1 silme, 2 = ekleme, 3 = güncelleştirmeden önce (görüntü) ve 4 = Güncelleştirme (sonra görüntü) =. Sütun __ $ update_mask yakalanan her sütun için bir tanımlı bit değişken bit maskesidir.Ekleme ve silme için girişler, güncelleştirmenin maskeyi her zaman tüm bitleri küme olacaktır.Satırlar, ancak güncelleştirme, yalnızca bu bit sahip küme, değiştirilmiş bir sütun karşılık gelir.

Değişiklik veri geçerliliği aralığı bir veritabanı için Yakala

Bir veritabanı için değişiklik veri yakalama geçerliliği aralık saat sırasında hangi değişiklik veri yakalama örnekleri için kullanılabilir.Ilk yakalama örnek için bir veritabanı oluşturduğunuzda, geçerlilik aralığı başlar tablo, geçerli tarihe kadar devam eder.

Belirli aralıklarla ve geliştirmekte verileri buda değil, değişiklik tablolarda yatırılan veri unmanageably büyüyecektir.Değişiklik veri yakalama temizleme işlemi saklama tabanlı Temizlik ilkesi zorlama için sorumludur.Öncelikle, saat kısıtlaması karşılamak için geçerlilik aralığının düşük bitiş noktası taşır.Sonra bu değişiklik removrd süresi tablo girişleri.Varsayılan olarak, veri üç gün korunur.

Yüksek sonunda yakalama her değişiklik veri, yeni toplu iş iş işlem tamamlandığında yeni girişler eklenir cdc.lsn_time_mapping değişiklik olan her hareket için tablo girişler. Eşlemeyi içinde tablo, saat, bir yürütme günlük sıra numarası (SSN) hem de bir işlem tamamlanmaya (sütun start_lsn ve tran_end_time, sırasıyla) korunur.Bulunur SSN değeri cdc.lsn_time_mapping Veritabanı penceresinin geçerliliği yüksek su işareti temsil eder. Karşılık gelen bir yürütme saat temel saklama temizleme düşük su işareti yeni hesaplar, temel olarak kullanılır.

Yakalama işlemi girişlerinizin hareket günlükten verileri değiştirmek için bulunmaktadır yerleşik bir değişiklik, ilişkili değişikliği tablo içinde görüntülenen zaman bir kaynak tabloya kararlıdır saat arasındaki gecikme süresi.Bu gecikme süresi genellikle küçük olsa da, yine de yakalama işlemi ilgili günlük girişler işleyene kadar değişiklik verinin kullanılamaz olduğunu unutmamanız da önemlidir.

Değişiklik veri geçerliliği aralığı bir yakalama örnek olarak yakalama

Bu veritabanı geçerliliği aralığını ve tek tek yakalama Geçerlilik aralığı için ortak olsa da örnek çakıştığı için , bu her zaman doğru değil.Yakalama işlemi yakalama örnek tanır ve ilişkili bir değişiklik, değişikliği oturum başlatır yakalama örneknin geçerlilik aralığına başlatır tablo.Yakalama örnekleri, farklı zamanlarda oluşturulursa, sonuç olarak, her başlangıçta düşük farklı bir bitiş noktası gerekir.Tarafından döndürülen sonuç kümesinin start_lsn sütun sys.sp_cdc_help_change_data_capture geçerli düşük son nokta için tanımlanmış yakalama örneğinde gösterir.Temizleme işlemi değişikliği tablosu girdilerini temizlerken, onu yeni düşük su işareti kullanılabilir değişiklik verileri yansıtacak şekilde yakalama hepsinin start_lsn değerlerini ayarlar.Yalnızca yeni olan düşük su işareti şu an az start_lsn değerleri olan yakalama örnekleri düzeltilir.Yeni yakalama örnekleri oluşturulursa, saat içinde veritabanı geçerliliği saat aralığı ile uyması için tüm bağımsız örnekleri için geçerli tarih aralıklarını eğilimlidir.

Ayıklama aralığı bir istek için tam olarak geçerli değişiklik veri yakalama geçerliliği aralığı için yakalama örnek kapsamındaki gerekir çünkü tüketicilerin değişiklik veri geçerliliği aralığı önemlidir.Ayıklama aralığı düşük bitiş noktası düşük son nokta geçerlilik aralığın soluna, orada ısrarlı temizleme yüzünden değişiklik veri eksik.Ayıklama aralığı yüksek bitiş noktası yüksek bitiş noktası geçerliliği aralığının sağında, yakalama işlemi henüz ayıklama aralığı tarafından temsil edilen saat boyunca işledi değil ve değişiklik veri de eksik olabilir.

Işlev sys.fn_cdc_get_min_lsn sırasında yakalama örnek için en az bir geçerli SSN almak için kullanılırsys.fn_cdc_get_max_lsn geçerli en büyük SSN değerini almak için kullanılır.Belirtilen SSN aralık içinde yer alan iki bu SSN değerleri bulunmayacak olması durumunda, verilerde değişiklik sorgularken değişiklik veri yakalama sorgu işlev başarısız olur.

Işleme değişiklikleri kaynak tabloları

Izlenen kaynak tablodaki sütun değişiklikleri yapabilmek için bir güç aşağı akım tüketiciler için sorundur.Bir kaynak tablo üzerinde değişiklik veri yakalama etkinleştirilmesi gibi DDL değişikliklerin yapılmasını engellemez, ancak temel kaynak tablonun sütun yapısını değiştirir gibi kalmasını API yoluyla döndürülen teslim sonuç kümelerini vererek tüketicilerin üzerindeki etkisini azaltmak için değişiklik veri yakalama yardımcı olduğu gibi.Bu sabit sütun yapısını da temel değişiklik yansıtılır tablo tanımlanan sorgu erişim işlev görür.

Tablo sabit sütun yapısını değişiklik yapabilmek için yakalama işlemi değişiklik tabloyu yerleştirmek için sorumlu kaynak tablo değişiklik veri yakalama için etkinleştirildiğinde, yakalama için tanımlanan herhangi bir yeni sütunlar yok sayacak.Izlenen bir sütun kesilirse, sonraki değişiklik girişlerindeki sütunun null değerlere sağlanır.Ancak, varolan sütun veri türü değişikliği geçer, yakalama mekanizması veri kaybı izlenen sütunları tanıtmak değil emin olmak için değişiklik tablo değişikliği yayılır.Yakalama işlemi izlenen tablo s the cdc.ddl_history sütun yapısını algılanan değişiklikler de deftere nakleder tablo.Aşağı akım uygulamalarda yapılması gerekebilir ayarlamasını uyarılmayı isteyen tüketicilerin kullanmak saklı yordam sys.sp_cdc_get_ddl_history.

Genellikle, geçerli yakalama örnek için ilgili kaynak tablosunu DDL değişiklikler uygulandığında şeklini korumak devam edecek.Ancak, yeni sütun yapısını yansıtan bir tablo için ikinci bir yakalama örnek oluşturmak mümkündür.Bu, iki farklı sütun yapıya sahip tablolar değiştirmek aynı kaynak tablo halinde iki ayrı değişiklik yapmak yakalama işlemi sağlar.Bu nedenle, ikinci bir değişikliği tablo geçerli işlem program akışı devam edebilirsiniz, ancak yeni sütun veri eklemek istediğiniz bir geliştirme ortamı sürücü.Iki kişilik değişikliği her iki tabloda da doldurmak için yakalama düzenek, değişiklik veri kaybı olmadan bir ağdan diğerine geçiş yapılabilir anlamına gelir izin verir.Bu işlem, iki veri yakalama saat çizelgelerini değiştirmek istediğiniz saat oluşabilir.Geçiş parametreden, eski yakalama örnek kaldırılabilir.

Not

En büyük yakalama örneklerinin tek bir kaynak tablo ile aynı anda ilişkilendirilebilecek iki sayıdır.

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

Mantık değişiklik veri yakalama işlemi için saklı yordamda yerleştirildi sp_replcmdssqlservr.exe bir parçası olarak oluşturulan ve bir de işlem günlüğü değişikliklerden konulu için işlem çoğaltma tarafından kullanılan bir iç sunucu işlev.Değişiklik veri yakalama tek başına bir veritabanı için etkinleştirildiğinde, değişiklik veri yakalama sp_replcmds baþlatmak için bu araç olarak, SQL Server Agent yakalama işlemini oluşturun.Çoğaltma de varsa, işlem logreader en başına her ikisi de bu tüketiciler için değişiklik veri gereksinimlerini karşılamak için kullanılır.Çoğaltma hem de değişiklik veri yakalama için aynı veritabanını etkinleştirildiğinde bu strateji, günlük Çekişme önemli ölçüde azaltır.

Değiştirme değişiklik veri yakalama çoğaltma durumu değişikliği olduğunda veri otomatik olarak gerçekleşir yakalamak için bu iki çalışma modu arasında geçiş veritabanı etkin.

Important noteImportant Note:

Her iki örneği yakalama mantığı gerektirir. SQL Server yürütmek işlemini yeniden çalıştırması için aracı.

Sütun veri ve hareket günlüğü taramak ve veri yakalama yakalama işlemi olduğundan değişiklik asıl görevi bilgi değişikliği veri yakalama değişiklik tablolarıyla ilgili.Işlem tutarlı bir sınır, dolduran veri yakalama değişiklik tabloları arasında değişiklik emin olmak için yakalama işlemi açılır ve her bir tarama döngüsü kendi hareketi tamamlar.Tablolar için değişiklik veri yakalama yeni etkinleştirildiğinde algılar ve bunları otomatik olarak ekler küme günlük girdilerinin değişikliği etkin olarak izlenen bir tablo.Benzer şekilde, değişiklik veri yakalama devre dışı bırakılması da, kaynak tablo, tabloların etkin değişiklik verilerini izlenen kümesinden kaldırılacak neden algılanacaktır.Günlük bir bölümü için işlem tamamlandığında, yakalama işlemi günlük girdilerinin kesilmesi için uygun tanımlamak için bu bilgileri kullanır sunucu günlük kesilme mantığı bildirir.

Not

Yakalama için işaretlenmiş tüm değişiklikler yakalama işlemi tarafından toplanan kadar basit kurtarma için günlük kesme noktası kurtarma moduna küme olsa bile, bir veritabanı değişiklik veri yakalama için etkinleştirildiğinde ilerlemek değil.Yakalama işlemi çalışır durumda ve toplanan için değişiklik, DENETIMNOKTASı yürütülüyor günlük keser değil.

Yakalama işlemi de izlenen tablolara DDL değişiklikleri geçmişini tutmak için kullanılır.Değişiklik veri yakalamayla ilgili DDL ifadeleri veritabanı işlem günlüğünün her bir değişikliği veri yakalama etkin veritabanı girişlerini yapmak veya tablo kesilmeden veya değişiklik veri yakalama etkin tablo sütunlarından eklenen, değiştirilen bırakılan veya.Bu günlük girdilerini ilişkili cdc.ddl_history DDL olaylara sonra deftere nakleder yakalama işlemi tarafından işlenen tablo.Saklı yordam kullanarak izlenen tabloları etkileyen DDL olaylar hakkında bilgi alabilirsiniz sys.sp_cdc_get_ddl_history.

Agent işleri değişiklik veri yakalama

Iki SQL Server Aracı işleri değişiklik veri yakalama etkinleştirilmiş veritabanıyla ilişkili genellikle şunlardır: s tablo ve değişiklik için sorumlu olan bir veritabanı doldurmak için kullanılan bir değiştirme tablo temizleme. Her iki işleri çalışan tek adımlı bir oluşur bir Transact-SQL Command. The Transact-SQL command that is invoked is a change data capture defined saklı yordam that implements the logic of the iş. Ilk tablo veritabanının değişikliği veri yakalama için etkin işleri oluşturulur.Temizleme işlemini iş her zaman oluşturulur.Yakalama işlemi, yalnızca veritabanı için tanımlanmış hiçbir iş yayımları varsa oluşturulur.Her ikisi de veri yakalamayı değiştirme işlem çoğaltma bir veritabanı için etkin ve veritabanı artık yayınları tanımlı olduğundan işlem logreader iş kaldırılır, yakalama işlemi de oluşturulur.

Hem yakalama hem de temizleme işlerini varsayılan parametreler kullanılarak oluşturulur.Yakalama iş hemen başlatılır.Tarama döngüsü her 1000 hareket en fazla 5 saniye arasında döngü bekleme ile işleme sürekli olarak çalışır.Temizleme işlemini iş her gün saat 2 DA çalıştırırBu değişikliği tablosu girdilerini 4320 dakika korur veya deyim en çok tek 5000 girişlerle kaldırma 3 gün silme.

Bir veritabanı için veri yakalamayı değiştirme devre dışı bırakıldığında, değişiklik veri yakalama aracı işlerini kaldırılır.Ilk yayın veritabanına eklenir ve değişiklik veri yakalama hem de iş çoğaltma etkin yakalama işlemini de kaldırılabilir.

Dahili olarak, veri yakalama Aracısı işleri oluşturulan ve depolanan yordamlar kullanarak bırakılan değiştirme sys.sp_cdc_add_job and sys.sp_cdc_drop_job, sırasıyla.Yöneticiler oluşturma ve kaldırma, bu işlerin böylece bu saklı yordamları da sunulur.

Yönetici, varsayılan yapılandırması, değişiklik veri yakalama aracı işleri üzerinde açık denetime sahip değildir.Saklı yordam sys.sp_cdc_change_job varsayılan yapılandırma parametrelerini değiştirilmesine olanak sağlanır.Ayrıca, saklı yordam sys.sp_cdc_help_jobs görüntülenebileceği, geçerli yapılandırma parametreleri sağlar.Her iki yakalama iş ve temizleme işlemini iş başlangıçta tablo msdb.dbo.cdc_işs gelen yapılandırma parametrelerini ayıklayın.Bu değerleri kullanarak yapılan değişiklikler sys.sp_cdc_change_job iş durdurulup yeniden başlatılana kadar etkili olmayacak.

Iki ek saklı yordamlar, başlatılan ve durdurulan değişiklik veri yakalama aracı işleri olanak sağlanır: sys.sp_cdc_start_job and sys.sp_cdc_stop_job.

Not

Yakalamayı durdurmak ve başlangıç iş değiştirme veri kaybına yol açmaz.Bunu yalnızca yakalama işlemi değişiklik girişlerinin, değişiklik tablolarda havale günlüğü etkin olarak tarama engeller.Günlük en yüksek istek dönemlerde yük eklemelerini tarama önlemek için makul bir strateji yakalama işlemini durdurmak ve isteğe bağlı olarak düşürülür, yeniden oluşturmaktır.

Both (Her ikisi) SQL Server Aracısı işleri kadar esnek olarak tasarlanmıştır ve karşılamak için yeterli düzeyde yapılandırılabilir temel veri değişikliği ortamları yakalama. Daha fazla özelleştirme olasıdır, her iki durumda da, ancak çekirdek işlevselliği sağlayan temel saklı yordamlar açık.