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

Bu konu, değişiklik veri yakalama izlemek ve yönetmek açıklar.

Bu Konuda

  • İş yakalama

  • Temizleme işi

  • Değişiklik veri yakalama işlemini izlemek

İş yakalama

Yakalama iş parametresiz saklı yordamını çalıştırarak başlatılan sp_MScdc_capture_job. Bu saklı yordam için yapılandırılan değerler ayıklayarak başlar maxtrans, maxscans, continuous, ve pollingintervaliçin yakalama iş msdb.dbo.cdc_jobs. Bu yapılandırılmış değerleri sonra saklı yordam parametreleri olarak geçirilen sp_cdc_scan. Bu çağırmak için kullanılan sp_replcmdsGünlük tarama gerçekleştirmek için.

Yakalama iş parametreleri

Yakalama iş davranışı anlamak için yapılandırılabilen parametreleri tarafından nasıl kullanıldığını anlamanız gerekir sp_cdc_scan.

maxtrans parametre

maxtransParametresi, \Kütüğü tek tarama döngüsünde işlenebilir hareketlerinin sayısını belirtir. Tarama sırasında proessed için işlem sayısı bu sınıra ulaşırsa, hiçbir ek işlem geçerli tarama dahil edilir. Bir tarama döngüsü tamamlandıktan sonra işlenen hareket sayısı her zaman küçük ya da eşit olacak maxtrans.

maxscans parametre

maxscansParametresi, günlük ya da dönmeden önce tahliye çalıştı tarama devir sayısını belirtir (sürekli = 0) veya bir waitfor yürütme (sürekli = 1).

Kontinü parametresi

continuousParametresi denetimleri olup olmadığını sp_cdc_scanDenetim Günlüğü boşaltma veya tarama döngüsü (tek çekim modu) sayısı yürütme sonrasında siler. O da controles olup sp_cdc_scanaçıkça durdu (sürekli modu kadar) çalışmaya devam eder.

Tek çekim modu

Yakalama iş ister tek çekim modunda, sp_cdc_scankadar gerçekleştirmek için maxtransgünlük drenaj ve dönmek için taramalar. Ek olarak herhangi bir işlem maxtransmevcut olan günlük daha sonra taramaları işlenir.

Tek çekim modunu kontrol testleri, nerede işlenecek işlemlerin hacmi bilinir ve bitince iş üzerinde otomatik olarak kapatır aslında faydası vardır kullanılır. Tek çekim modu, üretim kullanımı için önerilmez. Bunun nedeni, t ne sıklıkta tarama döngüsü çalıştırılan yönetmek için iş zamanlamaya bağlıdır.

Bir çekim modunda çalışırken, bir üst sınır yakalama işin aşağıdaki hesaplamasını kullanarak hareketleri saniyedeki ifade beklenen akışındaki hesaplaması:

(maxtrans * maxscans) / number of seconds between scans

Günlük tarama ve değişiklik tabloları doldurmak için gerekli süreyi bile 0'dan farklı, ortalama işlem hacmi iş hareketleri taramaları günlüğü işleme ayırarak saniye sayısını tarafından izin verilen en fazla çarpımı tek bir tarama için izin verilen en yüksek bölünmesiyle elde edilen değer aşmaması.

Tek çekim modu günlüğü tarama düzenlemek için kullanılacak olsaydı, iş planlaması tarafından yönetilmeye günlüğü işleme arasındaki saniye sayısını gerekir. Bu tür bir davranış istendiğinde yakalama iş sürekli modunda çalışan günlük tarama tarayamadı yönetmek için iyi bir yol var.

Sürekli modu ve yoklama aralığı

Sürekli modu, yakalama iş, ister sp_cdc_scansürekli çalışacak. Bu saklı yordam saniye arasında günlük (yoklama aralığı) işlemi sadece maxtrans ve maxscans ama aynı zamanda bir değer sağlayarak kendi bekleme döngüsü yönetmek sağlar. Bu modda, yakalama iş yürütme etkin kalır bir WAITFORGünlük tarama arasında.

[!NOT]

Yoklama aralığı değeri 0'dan büyük olduğunda, yinelenen bir atış iş akışındaki aynı üst sınırı da sürekli modunda iş işlemi uygulanır. Yani, ( maxtrans * maxscans) tarafından sıfır olmayan bir yoklama bölünmüş aralığı, yakalama işi tarafından işlenen hareketleri ortalama sayısına bir üst sınır koyacağız.

Yakalama işlemini özelleştirme

Yakalama iş için yeni tarama hemen başlar olup olmadığını belirlemek için ek mantık geçerli veya yerine yeni bir tarama başlamadan önce bir uyku konulan olup sabit bir yoklama aralığına bağlıdır. Seçim sadece günün saatine dayalı, belki de çok uzun zorlamayı yoğun aktivite zamanlarda uyur ve bir yoklama aralığı 0 hatta hareketli gün işleme gün tamamlamak önemli olduğunda kapatın ve gece ishal için hazırlamak. Yakalama işleminin ilerleme Ayrıca izlenen mid-night tarafından yapılan tüm işlem taranmış ve yatırılan içinde değişiklik tabloları ne zaman olmuştu belirlemek için. Bu tarafından zamanlanan günlük yeniden başlatılması için yakalama işi sonunda, sağlar. Teslim edilen iş adım arama değiştirerek sp_cdc_scanbir kullanıcı için sarıcı yazılı çağrısı ile sp_cdc_scan, üst düzeyde özelleştirilmiş davranış küçük bir ek çaba ile elde edilemiyor.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Temizleme işi

Bu bölüm nasıl temizleme işi işleri değişiklik veri yakalama hakkında bilgi sağlar.

Temizleme işi yapısı

Değişiklik veri yakalama saklama tabanlı Temizleme strateji değişikliği tablo boyutunu yönetmek için kullanır. Temizleme mekanizması oluşan bir SQL Serverajan Transact-SQLilk veritabanı tablosu etkinleştirildiğinde oluşturulan iş. Tek temizleme işi Temizleme tüm veritabanı Değiştir tablolar için işleme ve saklama değerin tüm tanımlanmış yakalama örnekleri için geçerlidir.

Parametresiz saklı yordamını çalıştırarak Temizleme işlemini başlatan sp_MScdc_cleanup_job. Bu saklı yordam ve Temizleme işinden yapılandırılmış saklama ve eşik değerlerini ayıklayarak başlar msdb.dbo.cdc_jobs. Saklama değer, yeni bir düşük filigran için değişiklik tabloları hesaplamak için kullanılır. Belirtilen dakika sayısından faturalanabilir dan maksimum olduğu tran_end_timegelen değeri cdc.lsn_time_mappingbir datetime değeri olarak ifade edilen yeni düşük su işareti elde etmek için tablo. CDC.lsn_time_mappingTablo sonra ilgili bu datetime değeri dönüştürmek için kullanılan lsndeğer. Aynı tamamlama zaman tablosunda birden çok girdi tarafından paylaşılıyorsa lsnsahip olan küçük girişe karşılık gelen lsnyeni düşük filigran olarak seçilmiştir. Bu lsndeğeri için geçirilen sp_cdc_cleanup_change_tablesdeğişiklik kaldırmak için tablo girdileri veritabanından tablolar değiştirin.

[!NOT]

Son hareket tamamlama zaman temel olarak yeni alt filigran bilgisayar kullanmanın avantajı, bu değişiklikler değişiklik tablolarda belirtilen süre boyunca kalmasını sağlar olduğunu. Bu, hatta yakalama işlemini arkasında çalışırken gerçekleşir. Geçerli alt filigran olarak aynı tamamlama zaman tüm girişleri Değiştir tablolar içinde küçük seçerek temsil devam lsngerçek alt filigran için paylaşılan tamamlama süresi olan.

Temizleme gerçekleştirildiğinde, alt filigran tüm yakalama örnekleri için tek bir işlem başlangıçta güncelleştirilir. Sonra değişiklik tabloları ve cdc.lsn_time_mapping tablo geçersiz girdileri kaldırmak için çalışır. Yapılandırılabilir eşik değeri, tek bir deyimi içinde kaç girişler silinir sınırlar. Herhangi bir tek tek masaya Sil gerçekleştirmek için başarısız kalan tablolardaki yapılmaya işlemin engellemez.

Temizleme işlemini özelleştirme

Temizleme işi için atılacak girişler Tablo değiştirme belirlemek için kullanılan strateji için özelleştirme imkanı vardır. Yalnızca desteklenen içinde teslim edilen temizleme işi zamana dayalı bir stratejidir. Bu durumda, yeni alt filigran işlenen son hareketi tamamlama süresi verilen saklama dönemi çıkarılarak hesaplanır. Alttaki temizleme işlemleri esas alır Beacuse lsnzaman yerine, stratejileri çok sayıda küçük belirlemek için kullanılabilir lsndeğişiklik tabloları tutmak için. Bunlardan yalnızca bazıları kesinlikle zaman tabanlı. Müşterileri hakkında bilgi, örneğin, değişiklik tabloları erişmesi akış süreçlerini çalışmazsa bir failsafe sağlamak için kullanılabilir. Ayrıca, aynı varsayılan strateji uygulanır, ancak lsn-e doğru temiz tüm veritabanları değişim tabloları, temel temizlik yordamı, ayrıca çağrılabilir yakalama örneği düzeyinde temizlemek için.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Değişiklik veri yakalama işlemini izlemek

İzleme değişiklikleri doğru ve makul bir gecikme ile değişim tablolara yazıldığını olmadığını Değiştir veri yakalama işlemi sağlar. İzleme oluşabilecek hataları belirlemenize de yardımcı olabilir. SQL Serverdeğişiklik veri yakalama izlemenize yardımcı olmak için iki dinamik yönetimi görünümleri içerir: sys.dm_cdc_log_scan_sessions ve sys.dm_cdc_errors.

Boş sonuç kümeleri oturumları belirle

Sys.dm_cdc_log_scan_sessions her satırda bir günlük tarama oturumu (dışında 0 satırı kimliği) temsil eder. Bir günlük tarama oturumu için bir yürütme eşdeğer sp_cdc_scan. Oturum sırasında tarama değişiklikleri geri dönmek ya da boş bir sonuç döndürür. Sonuç kümesi boş ise, sys.dm_cdc_log_scan_sessions empty_scan_count sütunu 1 olarak ayarlanır. Ardışık boş sonuç kümesi varsa, örneğin yakalama iş sürekli olarak empty_scan_count son varolan sırada artırılır çalışıyor. Örneğin, sys.dm_cdc_log_scan_sessions 10 satır değişiklikleri iade taramaları için zaten varsa ve orada bir satırda beş boş sonuç görünüm 11 satır içeriyor. Son satır, empty_scan_count sütun için 5 değeri vardır. Boş bir tarama vardı oturumları belirlemek için aşağıdaki sorgu aşağıdakini çalıştırın:

SELECT * from sys.dm_cdc_log_scan_sessions where empty_scan_count <> 0

Gecikme süresi belirlemek

Sys.dm_cdc_log_scan_sessions yönetimi görünümü her yakalama oturumu için gecikme kaydeden bir sütun içerir. Gecikme süresi, kaynak tablo üzerinde kaydedilmiş bir hareket ve değişim masaya kaydedilmiş son yakalanan hareket arasında geçen süre olarak tanımlanır. Gecikme sütunu yalnızca etkin oturumlar için doldurulur. Empty_scan_count sütununda 0'dan büyük bir değere sahip oturumları için gecikme sütun 0 olarak ayarlanır. Aşağıdaki sorgu ortalama gecikme süresi en son oturumlarının döndürür:

SELECT latency FROM sys.dm_cdc_log_scan_sessions WHERE session_id = 0

Gecikme veri yakalama işlemi ne kadar hızlı veya yavaş hareketleri işleme olduğunu belirlemek için kullanabilirsiniz. Yakalama işlemi sürekli olarak çalışırken, bu veri çok yararlıdır. Yakalama işlemini zamanlama üzerinde çalışıyorsa, gecikme süresi gecikme arasında kaynak tablo ve kendi zamanlanan saatte çalışan yakalama işlemi kaydedilmiş hareketler nedeniyle yüksek olabilir.

Bir başka önemli yakalama işlemi verimliliği verimi ölçümüdür. Her oturumunda işlenen komutları saniyedeki ortalama sayısı budur. Üretilen bir oturum belirlemek için command_count sütun değeri tarafından süre sütunundaki değeri bölün. Aşağıdaki sorgu ortalama verimi en son oturumlarının döndürür:

SELECT command_count/duration AS [Throughput] FROM sys.dm_cdc_log_scan_sessions WHERE session_id = 0

Veri Toplayıcı örnekleme veri toplamak için kullanın

SQL ServerVeri Toplayıcı, herhangi bir tablo veya dinamik yönetimi görünümü anlık veri toplamak ve performans veri deposu inşa sağlar. Bir veritabanı üzerinde değişiklik veri yakalama etkin olduğunda, daha sonraki analizler için düzenli aralıklarla sys.dm_cdc_log_scan_sessions ve sys.dm_cdc_errors anlık görüntüsünü yararlıdır. Aşağıdaki yordam, sys.dm_cdc_log_scan_sessions yönetimi görünümden örnek veri toplamak için veri toplayıcı kadar ayarlar.

Veri toplama yapılandırma

  1. Veri Toplayıcı etkinleştirme ve yapılandırma yönetimi veri ambar. Daha fazla bilgi için, bkz. Veri toplama yönetme.

  2. Değişiklik veri yakalama için özel bir toplayıcı oluşturmak için aşağıdaki kod yürütebilir.

    USE msdb;
    
    DECLARE @schedule_uid uniqueidentifier;
    
    -- Collect and upload data every 5 minutes
    SELECT @schedule_uid = (
    SELECT schedule_uid from sysschedules_localserver_view 
    WHERE name = N'CollectorSchedule_Every_5min')
    
    DECLARE @collection_set_id int;
    
    EXEC dbo.sp_syscollector_create_collection_set
    @name = N' CDC Performance Data Collector',
    @schedule_uid = @schedule_uid,        
    @collection_mode = 0,                 
    @days_until_expiration = 30,              
    @description = N'This collection set collects CDC metadata',
    @collection_set_id = @collection_set_id output;
    
    
    -- Create a collection item using statistics from 
    -- the change data capture dynamic management view.
    DECLARE @paramters xml;
    DECLARE @collection_item_id int;
    
    SELECT @paramters = CONVERT(xml, 
        N'<TSQLQueryCollector>
            <Query>
              <Value>SELECT * FROM sys.dm_cdc_log_scan_sessions</Value>
              <OutputTable>cdc_log_scan_data</OutputTable>
            </Query>
          </TSQLQueryCollector>');
    
    EXEC dbo.sp_syscollector_create_collection_item
    @collection_set_id = @collection_set_id,
    @collector_type_uid = N'302E93D1-3424-4BE7-AA8E-84813ECF2419',
    @name = ' CDC Performance Data Collector',
    @frequency = 5, 
    @parameters = @paramters,
    @collection_item_id = @collection_item_id output;
    
    GO
    
  3. De SQL Server Management Studio, genişletme yönetimive ardından Veri toplama. Sağ tıklayın cdc performans veri toplayıcıve'yi Veri toplama kümesi başlatmak.

  4. 1. Adımda yapılandırdığınız veri ambarı, tablo custom_snapshots.cdc_log_scan_data bulun. Bu tablo, historical anlık veri günlüğü tarama oturumları sağlar. Bu veriler, gecikme, işlem hacmi ve diğer performans ölçümleri zamanla analiz etmek için kullanılabilir.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Ayrıca bkz.

Kavramlar

Veri değişiklikleri izle

Değişiklik veri yakalama hakkında

Değişiklik veri yakalama devre

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