WEB开发网
开发学院数据库MSSQL Server SQL Server 2008 的CDC功能 阅读

SQL Server 2008 的CDC功能

 2009-09-19 00:00:00 来源:WEB开发网   
核心提示:CDC(Change Data Capture)通过对事务日志的异步读取,记录DML操作的发生时间、类型和实际影响的数据变化,SQL Server 2008 的CDC功能,然后将这些数据记录到启用CDC时自动创建的表中,通过cdc相关的存储过程, 下面我用一个实例讲解这个功能,该功能主要在ETL解决方案中比较有用,可以

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 3  下一页

Tags:SQL Server CDC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接