Change Data Capture (CDC)

CDC merupakan salahsatu fitur baru yang hadir dalam SQL Server 2008 keatas. Fitur ini dapat difungsikan untuk meng-capture perubahan yang terjadi pada table di SQL Server pada aktivitas Insert, Update dan Delete. tentunya hal ini akan sangat membantu seorang DBA saat melakukan suatu investigasi sebuah tabel, tidak perlu repot lagi dengan trigger, join query atau timestamp column untuk menangkap perubahan data.

Untuk dapat menggunakan fitur CDC. pertama kita harus meng-enabled-kan nya pada level database terlebih dahulu. berikut ini caranya. dalam contoh ini saya menggunakan database Adventureworks dan pastikan SqlServer Agent telah aktif.

use AdventureWorks

exec sys.sp_cdc_enable_db

lalu setelah code diatas telah di execute, kita cek hasil dengan query berikut

select is_cdc_enabled from sys.databases 

where name='Adventureworks'

Jika hasilnya 1, maka fitur CDC pada database adventureworks telah di enabled-kan.

Lalu kita berlanjut pada tahap selanjutnya yaitu meng-enabled-kan CDC pada level tabel dengan query sebagai berikut :

exec sys.sp_cdc_enable_table 

@source_schema='production',

@source_name='Culture',

@role_name='Culture_CDC'

Kemudian setelah code diatas telah di execute, kita bisa periksa apakah CDC telah di-enabled-kan dengan query berikut :

select is_tracked_by_cdc from sys.tables where name='culture'

jika hasilnya 1, maka fitur CDC pada tabel production.culture telah di enabled-kan.

Setelah kita mengaktifkan CDC pada level database dan table, akan ada perubahan pada System Tables di database Adventure works seperti pada gambar berikut :

CDC

mari kita coba beberapa transaksi terhdap table production.culture.

insert into Production.Culture

  (CultureID,Name,ModifiedDate)

  values

  ('id','Indonesia','2010-06-01 00:00:00.000')

  go

  update Production.Culture set

  Name='Ina' where CultureID='id'

  go

  delete from Production.Culture

  where CultureID='id'

  go

sekarang kita lihat bagaimana CDC merekam transaksi-transaksi diatas. saya menggunakan query terhadap table yang terbentuk di System Tables.

SELECT *  FROM cdc.production_Culture_CT

hasilnya adalah sebagai berikut :

image

pada field __$operation terdapat angka 1,2,3 dan 4. angka 1 mewakili aktivitas DELETE, angka 2 mewakili aktivitas INSERT, angka 3 mewakili UPDATE (before image) dan angka 4 mewakili aktivitas UPDATE (after image).

Jadi bila kita perhatikan pada row ke 2 dan 4. operation 3 lalu dilanjutkan ke operation 4. disitu tampak perubahan proses updatenya ada pada coloumn Name dimana ‘Indonesia’ berubah menjadi ‘Ina’.

Bila kita tidak memerlukan aktivitas CDC untuk table production.culture ini, dapat di disabled-kan dengan query berikut :

exec sys.sp_cdc_disable_table

  @source_schema='production',

  @source_name='culture',

  @capture_instance='production_culture'

  go

demikian, semoga bermanfaat.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.