#眉標=SQL Server 2008 #副標=SQL Server 2008功能初體驗(3) #大標=變更資料擷取 ─ Change Data Capture #作者=文/圖 楊志強 ============= 程式1 --從sys.objects中查詢屬於CDC結構描述的物件 USE TESTDB GO SELECT * FROM sys.objects WHERE schema_id=schema_id('CDC') ORDER BY TYPE================ ============= 程式2 --建立測試資料表 --支援NET CHANGE 追蹤 --資料表需要有主索引鍵、唯一條件約束、唯一索引 USE TESTDB GO --建立學生的成績 CREATE TABLE Student (StuID INT Identity primary key, --學生代號 StuName NVARCHAR(30) --學生姓名 ) GO CREATE TABLE Score (StuID INT, --學生編號 Period INT, --學期 StuScore DECIMAL(3,1) --成績 PRIMARY KEY(StuID,Period) ) GO================ ==<灰>=========== EXECUTE sys.sp_cdc_enable_table_change_data_capture [ @source_schema = ] '原始資料表結構描述名稱', [ @source_name = ] '原始資料表名稱' , [ @role_name = ] '可存取變更資料表的角色' [,[ @capture_instance = ] '變更實體名稱' ] [,[ @supports_net_changes = ] 是否支援淨變化,使用1或0 ] [,[ @index_name = ] '唯一索引的名稱' ] [,[ @captured_column_list = ] '需要追蹤資料行' ] [,[ @filegroup_name = ] '變更資料表儲存位置' ] ================ ============= 程式3 --啟動學生資料表支援CDC功能 USE TESTDB; GO EXECUTE sys.sp_cdc_enable_table_change_data_capture @source_schema = N'dbo' , @source_name = N'Student' , @role_name = N'cdc_Admin' GO================ ============= 程式4 --檢查該TABLE 是否已經啟動CDC功能 SELECT is_tracked_by_cdc,name,object_id FROM sys.tables WHERE NAME in('Student','Score') ================ ============= 程式5 --進行資料變更測試 --首先新增資料 INSERT INTO Student VALUES('Lewis') INSERT INTO Student VALUES('ADA') INSERT INTO Student VALUES('Sun') GO --變更資料 update student set stuname='Lewis Yang' where stuid=1 GO --刪除資料 delete from student where StuName='ADA' GO --檢視所有的資料 SELECT * FROM Student GO StuID StuName ----------- ----------- 1 Lewis Yang 3 Sun (2 row(s) affected)================ ============= 程式6 --新增學生資料表的生日資料行 ALTER TABLE Student ADD Birthate datetime GO --新增身份證資料行 ALTER TABLE Student ADD SSID VARCHAR(10) GO --刪除學生生日資料行 ALTER TABLE Student DROP COLUMN Birthate GO================