SQL Server 2008的CDC功能2011-10-30 博客园 陈希章CDC(Change Data Capture)通过对事务日志的异步读取,记录DML操作的发生时间、类型和实际影响的 数据变化,然后将这些数据记录到启用CDC时自动创建的表中。通过cdc相关的存储过程,可以获取详细的 数据变化情况。由于数据变化是异步读取的,因此对整体性能的影响不大,远小于通过Trigger实现的数 据变化记录。下面我用一个实例讲解这个功能。该功能主要在ETL解决方案中比较有用。
USE AdventureWorksDW;GOEXECUTE 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 FactInternetSalesVALUES(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; --这个表其实是在系统表里面