Aracılığıyla paylaş


Veri yakalamayı ve diğer özellikleri değiştirme

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Bu makalede, aşağıdaki özelliklerin SQL Server ve Azure SQL Yönetilen Örneği için değişiklik verisi yakalama ile nasıl etkileşime geçtiği açıklanmaktadır. Azure SQL Veritabanı için, Azure SQL Veritabanı ile ilgili altındaCDC'ye bakın.

Değişiklik izleme

Değişiklik verileri yakalama ve değişiklik izleme aynı veritabanında etkinleştirilebilir. Dikkat edilmesi gereken özel bir nokta yoktur. Daha fazla bilgi için bkz. Değişiklik İzleme ile Çalışma.

Veritabanı yansıtma

Değişiklik verisi yakalama özelliği etkinleştirilmiş bir veritabanı yansıtılabilir. Bir yük devretme işleminden sonra yakalama ve temizlemenin otomatik olarak gerçekleşmesini sağlamak için şu adımları izleyin:

  1. SQL Server Aracısı'nın yeni asıl sunucu örneğinde çalıştığından emin olun.

  2. Yakalama işini ve temizleme işini yeni asıl veritabanında (eski yansıtma veritabanı) oluşturun. İşleri oluşturmak için sp_cdc_add_job saklı komutunu kullanın.

Temizleme veya yakalama işinin geçerli yapılandırmasını görüntülemek için yeni asıl sunucu örneğinde sys.sp_cdc_help_jobs saklı yordamını kullanın. Belirli bir veritabanı için yakalama işi cdc olarak adlandırılır.database_name_capture ve temizleme işi cdc olarak adlandırılır.database_name_cleanup, burada database_name veritabanının adıdır.

Bir İşin Yapılandırmasını Değiştirmek İçin sys.sp_cdc_change_job Saklı Yordamını Kullanın.

Veritabanı yansıtma hakkında bilgi için bkz. Veritabanı Yansıtması (SQL Server).

Veri Tabanı İşlemleri Çoğaltma

Değişiklik veri yakalama ve işlem çoğaltması aynı veritabanında birlikte bulunabilir, ancak her iki özellik de etkinleştirildiğinde değişiklik tablolarının popülasyonu farklı işlenir. Değişiklik verisi yakalama ve işlem çoğaltması, işlem günlüğünden değişiklikleri okumak için her zaman aynı yordam olan sp_replcmds'i kullanır. Değişiklik veri yakalama özelliği tek başına etkinleştirildiğinde, SQL Server Agent görevi sp_replcmdsçağırır. Her iki özellik de aynı veritabanında etkinleştirildiğinde, Günlük Okuyucu Aracısı sp_replcmdsçağırır. Bu aracı hem değişiklik tablolarını hem de dağıtım veritabanı tablolarını doldurur. Daha fazla bilgi için bkz. Çoğaltma Günlüğü Okuyucu Aracısı.

değişiklik veri yakalamanın AdventureWorks2025 veritabanında etkinleştirildiği ve yakalama için iki tablonun etkinleştirildiği bir senaryo düşünün. Değişiklik tablolarını doldurmak üzere yakalama işi, sp_replcmds'i çağırır. Veritabanı transaksiyonel replikasyon için etkinleştirilir ve bir yayın oluşturulur. Şimdi veritabanı için Günlük Okuma Aracısı oluşturuluyor ve yakalama görevi siliniyor. Günlük Okuyucu Aracısı, değişiklik tablosuna işlenmiş olan son günlük dizisi numarasından itibaren günlüğü taramaya devam eder. Bu, değişiklik tablolarında veri tutarlılığı sağlar. Bu veritabanında işlem çoğaltması devre dışı bırakıldığında, Günlük Okuyucu Aracısı kaldırılır ve yakalama işlemi yeniden oluşturulur.

Not

Günlük Okuyucu Aracısı hem değişiklik verisi yakalama hem de işlem çoğaltması için kullanıldığında, çoğaltılan değişiklikler ilk olarak dağıtım veritabanına yazılır. Ardından, yakalanan değişiklikler değişiklik tablolarına yazılır. Her iki işlem de birlikte taahhüt edilir. Dağıtım veritabanına yazmada herhangi bir gecikme varsa, değişiklik tablolarında değişiklikler görünmeden önce buna karşılık gelen bir gecikme süresi olacaktır.

değişiklik veri yakalama etkinleştirildiğinde proc exec işlem çoğaltma seçeneği kullanılamaz.

Veritabanı geri yükleme veya ekleme

SQL Server, veritabanı geri yüklendikten veya eklendikten sonra değişiklik veri yakalamanın etkin kalıp kalmadığını belirlemek için aşağıdaki mantığı kullanır:

  • Bir veritabanı aynı veritabanı adıyla aynı sunucuya geri yüklenirse değişiklik veri yakalama etkin kalır.

  • Veritabanı başka bir sunucuya geri yüklenirse, varsayılan olarak değişiklik verisi yakalama devre dışı bırakılır ve tüm ilgili meta veriler silinir.

    Değişiklik verilerini yakalamayı korumak için veritabanını geri yüklerken KEEP_CDC seçeneğini kullanın. Bu seçenek hakkında daha fazla bilgi için bkz. RESTORE.

  • Bir veritabanı ayrılır ve aynı sunucuya veya başka bir sunucuya bağlıysa, değişiklik veri yakalama etkin kalır.

  • Veritabanı Standard, Enterprise veya SQL Yönetilen Örneği dışındaki herhangi bir sürüme KEEP_CDC seçeneğiyle eklenir veya geri yüklenirse değişiklik veri yakalama işlemi SQL Server Standard, Enterprise veya SQL Yönetilen Örneği sürümlerini gerektirdiğinden işlem engellenir. Hata iletisi 934 görüntüleniyor:

    SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either restore database without KEEP_CDC option, or upgrade the instance to one that supports change data capture.

Geri yüklenen veya eklenen veritabanından değişiklik veri yakalamasını kaldırmak için sys.sp_cdc_disable_db kullanabilirsiniz.

Azure SQL Yönetilen Örneği'ne bir veritabanını geri yükledikten sonra CDC etkin kalır, ancak tarama ve temizleme işlerinin eklendiğinden ve çalıştığından emin olmanız gerekir. sys.sp_cdc_add_jobçalıştırarak işleri el ile ekleyebilirsiniz.

Kapsanan veritabanları

Değişiklik veri yakalama, kapsanan veritabanlarında desteklenmez.

Kullanılabilirlik grupları

Always On kullanılabilirlik gruplarını kullandığınızda, birincil çoğaltmadaki disk yükünü azaltmak için ikincil çoğaltmada değişiklik numaralandırması yapılmalıdır.

Columnstore dizinleri

Kümelenmiş columnstore dizini olan tablolarda değişiklik veri yakalama etkinleştirilemiyor. SQL Server 2016'da başlayarak, kümelenmemiş columnstore dizini olan tablolarda etkinleştirilebilir.

Hesaplanan sütunlar

Hesaplanan sütun kalıcı olarak tanımlansa bile CDC hesaplanan sütunların değerlerini desteklemez. Yakalama örneğine dahil edilen hesaplanan sütunlar her zaman NULLdeğerine sahiptir. Bu davranış bir hata değil, amaçlanmıştır.

Linux

CDC, CU18 ile başlayarak Linux üzerinde SQL Server 2017 ve Linux üzerinde SQL Server 2019 için desteklenir.

Ayrıca Bkz.