menu

Thursday, March 31, 2011

Change Data Capture (CDC)







Untuk Kesempatan kali ini kita akan belajar mewarnai membahas tentang CDC.
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     = NULL 
Pastikan 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 ??? 
klik pada link ini untuk melanjutkan : http://grahitanusantara.blogspot.com/2011/04/cara-kerja-change-data-capture.html

No comments:

Post a Comment