sql-server - 带有 CHANGE TRACKING 的 SSIS 包保留丢失的记录
问题描述
我有一个使用 CHANGE TRACKING 的 SSIS 包,它每 5 分钟运行一次,以在表上执行单向同步。
这些是涉及的数据库:
- 目标数据库
- 源数据库
DestDB 包含一个名为 TableSyncVersions 的表,用于跟踪用于从 SourceDB 中的表中提取信息的最新同步版本。这个 Sync Version 用于包的下一次执行以获取下一批数据。
SourceDB 启用了快照隔离,并且 CT 查询正在由 SSIS 中的“OLE DB 源”执行。查询如下:
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
BEGIN TRAN;
--Using OLE DB parameters to capture the current version within the transaction
SELECT ? = CAST(CHANGE_TRACKING_CURRENT_VERSION() AS NVARCHAR)
SELECT ct.KeyColumn1
, ct.KeyColumn2
, ct.KeyColumn3
, st.Column1
, st.Column2
, st.Column3
, st.Column4
, ct.SYS_CHANGE_OPERATION
FROM TABLE1 AS st
--Using OLE DB Parameters to reference the version # saved in TableSyncVersions
RIGHT OUTER JOIN CHANGETABLE(CHANGES TABLE1, ?) AS ct
ON avq.KeyColumn1 = ct.KeyColumn1
AND avq.KeyColumn2 = ct.KeyColumn2
AND avq.KeyColumn3 = ct.KeyColumn3
COMMIT TRAN;
这是此包的控制流的屏幕截图:
每天至少一次,即使运行没有错误,该包也会丢失 5-20 条记录,每天在不同的时间丢失记录。以前有人在更改跟踪方面经历过类似的事情吗?
任何帮助是极大的赞赏。
谢谢你,托利山
解决方案
推荐阅读
- python-3.x - 与多个进程共享内存中的 sqlite 的含义
- javascript - import module.fucntion 工作,但 import { function } from '../../module' 在 ReactJS 中不起作用
- tsql - 使用 SQL Server 2016 的带有嵌套 While 循环的 While 循环问题
- vue.js - Vue 动态 ref 显示下拉菜单
- octave - 从 CSV 文件在 x 轴上绘制时间戳
- python - Python 请求 - 获取服务器 IP
- merge - 通过 GitLab API 访问合并设置
- c# - 无状态库 - PermitIf 与 SetTriggerParameters 一起使用
- php - 选择标签值后如何在输入标签中显示数据?
- html - 负 z-index 在 Safari 中不起作用吗?