程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2008的CDC功能

SQL Server 2008的CDC功能

編輯:關於SqlServer

CDC(Change Data Capture)通過對事務日志的異步讀取,記錄DML操作的發生時間、類型和實際影響的 數據變化,然後將這些數據記錄到啟用CDC時自動創建的表中。通過cdc相關的存儲過程,可以獲取詳細的 數據變化情況。由於數據變化是異步讀取的,因此對整體性能的影響不大,遠小於通過Trigger實現的數 據變化記錄。

下面我用一個實例講解這個功能。該功能主要在ETL解決方案中比較有用。

USE AdventureWorksDW;
GO
EXECUTE sys.sp_cdc_enable_db; --啟用數據庫對CDC的支持
GO 
EXEC sys.sp_cdc_enable_table 'dbo', 
'FactInternetSales', @role_name = NULL, @supports_net_changes =0; --啟用某個表對CDC的

支持
GO 
--這裡的supports_net_changes指的是是否支持所謂的淨更改,即過濾掉重復的 
SELECT name, is_tracked_by_cdc FROM sys.tables 
WHERE name LIKE ('fact%'); 
INSERT INTO FactInternetSales
VALUES

(484,1127,1139,1134,18759,1,100,6,'SO75124',1,1,1,21.9800,21.9800,0,0,8.2205,8.2205,21.9800,

1.7584,0.5495,NULL,NULL); 
INSERT INTO FactInternetSales 
VALUES

(486,1127,1139,1134,18759,1,100,6,'SO75125',1,1,1,21.9800,21.9800,0,0,8.2205,8.2205,21.9800,

1.7584,0.5495,NULL,NULL); 
UPDATE FactInternetSales 
SET PromotionKey = 2  
WHERE SalesOrderNumber = 'SO75124'; 
DELETE FROM FactInternetSales WHERE SalesOrderNumber='SO75125' 
SELECT * FROM cdc.dbo_FactInternetSales_CT;  --這個表其實是在系統表裡面

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved