2012-01-13 66 views
2

SQL Server 2008. 是否有可能为db中的几个相关表创建更改数据捕获(或更改跟踪) ? 例如多对多关系。更改几个表的数据捕获

它会是什么样子?

回答

0

从来没有使用它,但从MSDN doc我会说:是的!

首先准备分贝:

ALTER DATABASE [yourdb] SET ALLOW_SNAPSHOT_ISOLATION ON 

ALTER DATABASE [yourdb] 
SET CHANGE_TRACKING = ON 
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON) 

立即启用变化对所需的表(S)跟踪:

ALTER TABLE [yourdb].[yourschema].[yourtable] 
ENABLE CHANGE_TRACKING 

查询更改:

IF @sync_initialized = 0 
    SELECT * 
    FROM [yourschema].[yourtable] LEFT OUTER JOIN 
    CHANGETABLE(CHANGES [yourschema].[yourtable], @sync_last_received_anchor) CT 
    ON CT.[yourkey] = [yourschema].[yourtable].[yourkey] 
ELSE 
BEGIN 
    SELECT * 
    FROM Sales.Customer 
    JOIN CHANGETABLE(CHANGES [yourschema].[yourtable], @sync_last_received_anchor) CT 
    ON CT.[yourkey] = [yourschema].[yourtable].[yourkey] 
    WHERE (CT.SYS_CHANGE_OPERATION = 'I' 
    AND CT.SYS_CHANGE_CREATION_VERSION 
    <= @sync_new_received_anchor) 
END 
相关问题