【问题标题】:Change Data Capture for several tables多个表的更改数据捕获
【发布时间】:2012-01-13 13:53:02
【问题描述】:

SQL Server 2008。 是否可以创建变更数据捕获(或变更跟踪) 对于数据库中的几个相关表? 例如多对多关系。

它会是什么样子?

【问题讨论】:

    标签: sql-server-2008 change-tracking change-data-capture


    【解决方案1】:

    从未使用过它,但来自MSDN doc 我会说:是的!

    先准备好数据库:

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

    现在在所需表上启用更改跟踪:

    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
    

    【讨论】:

      猜你喜欢
      • 2015-05-20
      • 1970-01-01
      • 2017-05-13
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多