Untuk Kesempatan kali ini kita akan
agar lebih mudah untuk memahami maka kita menggunakan Database sederhana untuk testing.
berikut Query untuk Create Database yang akan kita gunakan
CREATE DATABASE BELAJARCDC
Berikut Create Table yang akan kita gunakan
USE BELAJARCDC GO CREATE SCHEMA HR GO CREATE TABLE HR.Person ( id int Identity (2011,1), nama Varchar (100), jenis_kelamin Char (1), tempat_lahir VARCHAR (50), tanggal_lahir Datetime, alamat VARCHAR (200), kota_domisili VARCHAR (50) )
Dan berikut untuk Insert datanya
INSERT INTO [BELAJARCDC].[HR].[Person] ([nama] ,[jenis_kelamin] ,[tempat_lahir] ,[tanggal_lahir] ,[alamat] ,[kota_domisili]) VALUES ('Werkudara','L','Jodipati','08-28-1986','JL.ayodya 299','Jodipati'), ('Arjuna','L','Hastina','03-11-1987','JL.pesanggrahan 88','Hastina'), ('Dewi Kunthi','P','Adirata','11-28-1989','JL.sendiko gusti 35','Adirata') GO
Setup CDC pada Database
Check CDC yang sedang run pada Server dengan
USE master GO SELECT [name], database_id, is_cdc_enabled FROM sys.databases GO
disini kita akan mencoba mengaktifkan CDC pada BELAJARCDC
USE BELAJARCDC GO EXEC sys.sp_cdc_enable_db GO
nah..sekarang CDC pasti sudah dalam kondisi active pada BELAJARCDC
Secara Otomatis akan tercreate beberapa table baru pada BELAJARCDC >> Tables >> System Tables
berikut adalah table baru yang akan muncul :
Akan muncul Schema baru (CDC) di BELAJARCDC >> Security >> Schemas
Setting CDC pada table tertentu
Periksa table dimana CDC sudah aktif
USE BELAJARCDC GO SELECT [name], is_tracked_by_cdc FROM sys.tables GO
Berikutnya kita perlu mengaktifkan pada table mana kita akan menggunakan CDC, pada kesempatan kali ini kita akan mencoba mengaktifkan CDC pada table Person
USE BELAJARCDC GO EXEC sys.sp_cdc_enable_table @source_schema = N'HR', @source_name = N'Person', @role_name = NULLPastikan bahwa SQL Job Agent dalam kondisi RUN
dan berikut apabila JOB CDC berhasil di Create
Dan akan secara otomatis tercreate Replikasi untuk table Person.Person pada BELAJARCDC >> Tables >> System Tables
Default-nya , semua kolom pada table cdc akan dibaca dan diproses dalam operasi cdc ini, dalam hal ini contohnya pada table Person yang telah kita buat. namun apabila yang akan ditrack hanya beberapa kolom (mempercepat performance) maka kita perlu merubah [cdc].[fn_cdc_get_all_changes_HR_Person] sesuai dengan kebutuhan akan kolom-kolom mana saja yang aka ditrack perubahanya.
gambar : column pada table mirror yang tercreate oleh cdc
Seperti yang bisa kita lihat bersama diatas bahwa setelah kita setup cdc pada suatu table , maka secara otomatis akan tercreate table baru (HR.Person_CT) sama persis seperti table yang akan ditrack oleh cdc. sedangkan table ini berfungsi untuk menyimpan data yang berubah. namun ada penambahan 5 kolom baru yaitu :
__$start_lsn
__$end_lsn
__$seqval
__$operation
__$update_mask
column yang paling penting disini adalah __$operation and __$update_mask.
Column _$operation akan menyimpan keterangan , apakah operasi delete,insert atau update. nah berikut adalah default value untuk pengcodean operasi DDL yang akan dicapture CDC.
Delete Statement = 1
Insert Statement = 2
Nilai sebelum diupdate = 3
Nilai setelah diupdate = 4
column _$update_mask akan disave dengan menggunakan bit datatype, yang akan menunjukan kolom mana yang diupdate .
Bagaimana Cara Kerja CDC ??? |
No comments:
Post a Comment