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 :
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 :
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.