Ana içeriğe atla

SQL Server 2008 Yenilikler – Bölüm 3 (Loglama/CDC)

Bir önceki yazımızda, SQL Server 2008 ile gelen Auditing ile loglama mantığını anlatmıştık. Bu yazımızda, diğer bir loglama özelliği olan CDC (Change Data Capture)’den bahsedeceğiz. CDC özelliği ile row bazında yapılan tüm işlemler tarihsel bilgilerle saklanabilmektedir. 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.
imageŞekil 1. CDC akışı
1.  Database seviyesinde CDC nin açılması
Exec sys.sp_cdc_enable_db
2.  İstenilen tablo için CDC nin aktif hale getirilmesi
EXEC sp_cdc_enable_table 'dbo', 'TBLILCE', @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.
cdc.dbo_<TABLOADI>_CT
Örnek: TBLILCE tablosu için  cdc.dbo_TBLILCE_CT

3.  Hangi tablolar için CDC nin aktif olduğunun izlenmesi 
SELECT * FROM sys.tables where is_tracked_by_cdc=1
4. CDC tablosundan hangi işlemlerin yapıldığının izlenmesi
$start_lsn
$end_lsn
$seqval
$operation
$Mask
KOD
AD
0x0001C9C400009E570005
NULL
0x0001C9C400009E570002
2
0x03
4
d
0x0001C9C400009E610005
NULL
0x0001C9C400009E610002
2
0x03
5
e
0x0001C9C400009E660005
NULL
0x0001C9C400009E660002
2
0x03
6
f
0x0001C9C400009E680006
NULL
0x0001C9C400009E680002
3
0x02
6
f
0x0001C9C400009E680006
NULL
0x0001C9C400009E680002
4
0x02
6
fffff
0x0001C9C500001C770005
NULL
0x0001C9C500001C770002
2
0x03
7
gggg
0x0001C9C500001C7E0006
NULL
0x0001C9C500001C7E0004
1
0x03
6
fffff
0x0001C9C500001C830006
NULL
0x0001C9C500001C830002
3
0x02
5
e
0x0001C9C500001C830006
NULL
0x0001C9C500001C830002
4
0x02
5
eee
Listede gelen ilk 5 kolon CDC sistemi tarafından otomatik olarak eklenir. Sonraki kolonlar ise ilgili tablonun kolonlarıdır. $stat_lsn ve $end_lsn parametreleri ile değişiklikleri sorgularken LSN (Log Sequence Number) aralığına göre sorgulanabilir. $operation kolonu şu değerleri alabilir :
  • 1 = delete
  • 2 = insert
  • 3 = update (Update öncesi)
  • 4 = update (Update Sonrası).
Seçkin KARABACAKOĞLU, Serap PARLAK, Deniz KILINÇ

Yorumlar