Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 更改多个表的数据捕获_Sql Server 2008_Change Tracking_Change Data Capture - Fatal编程技术网

Sql server 2008 更改多个表的数据捕获

Sql server 2008 更改多个表的数据捕获,sql-server-2008,change-tracking,change-data-capture,Sql Server 2008,Change Tracking,Change Data Capture,SQL Server 2008。 是否可以创建更改数据捕获(或更改跟踪) 对于数据库中的几个相关表格? 例如多对多关系 它会是什么样子?从来没有用过它,但我会说:是的 首先准备数据库: ALTER DATABASE [yourdb] SET ALLOW_SNAPSHOT_ISOLATION ON ALTER DATABASE [yourdb] SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON) 现在在

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


它会是什么样子?

从来没有用过它,但我会说:是的

首先准备数据库:

ALTER DATABASE [yourdb] SET ALLOW_SNAPSHOT_ISOLATION ON

ALTER DATABASE [yourdb]
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
现在在所需的表上启用更改跟踪:

查询更改:

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
如果@sync\u已初始化=0
选择*
来自[yourschema]。[yourtable]左外部联接
CHANGETABLE(更改[yourschema]。[yourtable],@sync\u last\u received\u anchor)CT
在CT上。[yourkey]=[yourschema].[yourtable].[yourkey]
其他的
开始
挑选*
来自销售部。客户
JOIN CHANGETABLE(更改[yourschema]。[yourtable],@sync\u last\u received\u anchor)CT
在CT上。[yourkey]=[yourschema].[yourtable].[yourkey]
其中(CT.SYS\u CHANGE\u OPERATION='I'
和CT.SYS\u更改\u创建\u版本

从来没有用过它,但我会说:是的

首先准备数据库:

ALTER DATABASE [yourdb] SET ALLOW_SNAPSHOT_ISOLATION ON

ALTER DATABASE [yourdb]
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
现在在所需的表上启用更改跟踪:

查询更改:

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
如果@sync\u已初始化=0
选择*
来自[yourschema]。[yourtable]左外部联接
CHANGETABLE(更改[yourschema]。[yourtable],@sync\u last\u received\u anchor)CT
在CT上。[yourkey]=[yourschema].[yourtable].[yourkey]
其他的
开始
挑选*
来自销售部。客户
JOIN CHANGETABLE(更改[yourschema]。[yourtable],@sync\u last\u received\u anchor)CT
在CT上。[yourkey]=[yourschema].[yourtable].[yourkey]
其中(CT.SYS\u CHANGE\u OPERATION='I'
和CT.SYS\u更改\u创建\u版本