我有一个使用CHANGE TRACKING的SSIS软件包,该软件包每5分钟运行一次,以对表执行单向同步。
这些与数据库有关:
- DestDB
- SourceDB
DestDB包含一个名为TableSyncVersions的表,该表用于跟踪用于从SourceDB中的表中提取信息的最新Sync版本。此同步版本用于包的下一次执行以获取下一批数据。
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条记录,即使它运行无误,也每天都会在不同时间丢失这些记录。以前有人在变更跟踪中经历过类似的事情吗?
非常感谢您的帮助。
谢谢你, 托里山