SQL CDC (Change Data Capture)

Haktan AKDAĞ
2 min readDec 11, 2023

SQL Server kullanırken CDC özelliği ile row bazında yapılan tüm işlemler tarihsel bilgilerle saklanabilir. Yani hangi kayıtlar üzerinde hangi tarihler arasında ne gibi işlemler yapıldığı raporlanabilir. Tüm CDC işlemleri T-SQL komutları ile yapılır.

CDC yi database seviyesinde açmak için aşağıdaki kod satırını kullanabilirsiniz.

Exec sys.sp_cdc_enable_db

Tablo bazında CDC yi aktif edebilirsiniz.

EXEC sp_cdc_enable_table 'dbo', 'TABLOAD', @role_name = NULL, @supports_net_changes =1

Tablo için CDC aktif hale getirilince, tablo yapısıyla aynı olan ve ilave olarak 5 tane sahanın eklendiği yeni bir tablo yaratılır.
Tüm DML işlemlerinde (Insert, update, delete) buraya yeni bir kayıt atılır. Yeni açılan tablonun isimlendirmesi şu şekildedir.

Hangi tablolarda aktif mi diye kontrol etmek isterseniz aşağıdaki kodu çalıştırabilirsiniz.

SELECT * FROM sys.tables where is_tracked_by_cdc=1

Aşağıdaki sorguları çalıştırdığınızda db üzerindeki cdc tablolarını inceleyebilirsiniz.

SELECT * FROM [cdc].[captured_columns]
SELECT * FROM [cdc].[change_tables]
SELECT * FROM [cdc].[ddl_history]
SELECT * FROM [cdc].[index_columns]
SELECT * FROM [cdc].[lsn_time_mapping]
SELECT * FROM [dbo].[systranschemas]
SELECT * FROM sys.tables where is_tracked_by_cdc=1

--

--