Create SQL Server CDC
Sesuai dengan judul postingan "Create CDC SQL Server" maka kali ini penulis akan menjelaskan cara pembuatan CDC (Change Data Capture) di SQL Server.
Langkah pengaturan CDC tersebut terdiri dari beberapa tahap yang dimulai dari level database sampai dengan level table.
Seperti terlihat pada langkah-langkah dibawah ini :
Dibawah ini adalah keterangan untuk kolom hasil pencatatan pada CDC setelah kita melakukan DML (Data Manipulation Language) di table.
-- Proses insert akan menghasilkan 1 baris
[__$operation] : 2
[__$update_mask] : 0x7F
-- Proses update akan menghasilkan 2 baris (1 sebelum dan 1 sesudah update)
[__$operation] : 3 (before)
[__$operation] : 4 (after)
[__$update_mask] : 0x08
-- Proses delete akan menghasilkan 1 baris yang telah dihapus
[__$operation] : 1
[__$update_mask] : 0x7F
Berikut ini saya tambahkan script untuk melakukan disable CDC di SQL Server.
-- Akan menghapus table cdc
EXEC sys.sp_cdc_disable_db
-- Akan menghapus table CDC utk FT_MUSER
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'FT_MUSER',
@capture_instance = 'dbo_FT_MUSER'
GO
Langkah pengaturan CDC tersebut terdiri dari beberapa tahap yang dimulai dari level database sampai dengan level table.
Seperti terlihat pada langkah-langkah dibawah ini :
- Mengaktifkan CDC di level Database
use [dbname]
EXEC sys.sp_cdc_enable_db -- membuat table cdc
Setelah script diatas dijalankan maka di dalam folder system akan dibuatkan 6 buah tabel system.
- Mengaktifkan CDC di level Table
-- enable cdc per table
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'FT_MUSER',
@role_name = N'public',
@supports_net_changes = 1
GO
Setelah script diatas dijalankan maka akan dibuat sebuah tabel berakhiran _CT didalam folder system yang akan berisi setiap perubahan didalam tabel tersebut.
. - Melakukan pengechekan setting CDC di Sys.Tables
-- cek table telah ditracked
SELECT is_tracked_by_cdc, * FROM sys.tables WHERE name = 'FT_MUSER'
GO
Hasil dari script diatas dapat dilihat pada langkah nomor 3. - Melakukan DML untuk Pengetesan
- Melihat Hasil CDC setelah proses DML
Untuk melihat hasil capture maka kita tinggal melakukan query terhadap table yang telah disetting CDC.
Table yang telah disetting CDC akan dibuatkan sebuah table dengan nama sesuai table dan diakhiri dengan _CT.
-- Proses insert akan menghasilkan 1 baris
[__$operation] : 2
[__$update_mask] : 0x7F
-- Proses update akan menghasilkan 2 baris (1 sebelum dan 1 sesudah update)
[__$operation] : 3 (before)
[__$operation] : 4 (after)
[__$update_mask] : 0x08
-- Proses delete akan menghasilkan 1 baris yang telah dihapus
[__$operation] : 1
[__$update_mask] : 0x7F
Berikut ini saya tambahkan script untuk melakukan disable CDC di SQL Server.
-- Akan menghapus table cdc
EXEC sys.sp_cdc_disable_db
-- Akan menghapus table CDC utk FT_MUSER
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'FT_MUSER',
@capture_instance = 'dbo_FT_MUSER'
GO