首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 變更資料擷取 (CDC) 實戰教學 (二):擷取 DML 變更資料、LSN 對應與變更表查詢

     編輯:關於SqlServer

前情提要

承接第一部分,已建立 MyDataBase、MyTable 並啟用 CDC。現演示 DML 變更擷取。

步驟 1:插入測試資料

USE MyDataBase;
INSERT INTO MyTable VALUES (1, 'DanceDoll', '221,WestBroadst,Greenbay,Wisconsin', 60000, 1000);
INSERT INTO MyTable VALUES (2, 'RainbowColors', '21,Eastst,Denville,NewJersey', 68000, 1300);
INSERT INTO MyTable VALUES (3, 'RiverDance', '1,SouthBroadst,Quincy,Massachusetts', 76000, 1600);
INSERT INTO MyTable VALUES (4, 'MickeyMouse', '5,Main,Greenbay,Wisconsin', 120000, 12000);
INSERT INTO MyTable VALUES (5, 'UniversalStudiOS', '7,Newroad,Danbury,Connecticut', 45000, 1600);

步驟 2:查詢 LSN 時間對應

SELECT * FROM cdc.lsn_time_mapping;

顯示 5 筆交易的 LSN、開始/結束時間與交易 ID。

步驟 3:查詢變更表

CDC 自動建立對應表 dbo_MyTable_CT (命名規則:原結構描述_原表名_CT)。

SELECT * FROM cdc.dbo_MyTable_CT;

結果包含 5 筆 INSERT 記錄 (__$operation = 2),__$update_mask = 0x03 表示所有欄位變更。

步驟 4:更新與刪除測試

UPDATE MyTable SET Salary = 125000 WHERE ID = 4;
DELETE FROM MyTable WHERE ID = 4;

再次查詢 lsn_time_mapping 新增 1 筆 LSN;dbo_MyTable_CT 新增 DELETE 記錄 (__$operation = 1)。

步驟 5:單純更新測試

UPDATE MyTable SET Salary = 1200 WHERE ID = 1;
UPDATE MyTable SET Name = 'abc' WHERE Name = 'DanceDoll';

查詢變更表出現 2 筆 UPDATE 記錄:__$operation = 3 (更新前) 與 __$operation = 4 (更新後),__$update_mask = 0x02 僅標示 Name 欄位變更。

結語

本文示範 INSERT/UPDATE/DELETE 變更完整擷取流程,驗證 CDC 精確記錄每筆資料變更與中繼資訊,為後續高效查詢變更資料奠基。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved