Пакет служб SSIS с CHANGE TRACKING хранит недостающие записи - PullRequest
1 голос
/ 05 ноября 2019

У меня есть пакет служб SSIS, использующий CHANGE TRACKING, который запускается каждые 5 минут для выполнения односторонней синхронизации таблицы.

Это задействованные базы данных:

  • DestDB
  • SourceDB

DestDB содержит таблицу TableSyncVersions, которая используется для отслеживания самой последней версии Sync, используемой для извлечения информации из таблицы в SourceDB. Эта версия синхронизации используется для следующего выполнения пакета для получения следующего пакета данных.

В SourceDB включена изоляция моментальных снимков, и запрос CT выполняется "источником OLE DB" в SSIS. Запрос выглядит следующим образом:

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; 

Вот снимок экрана потока управления для этого пакета:

Change Tracking SSIS Control Flow

AtПо крайней мере, один раз в день пакет пропускает 5-20 записей, хотя он запускается без ошибок, записи пропускаются каждый раз в разное время. Кто-нибудь испытывал что-то подобное с отслеживанием изменений раньше?

Любая помощь очень ценится.

Спасибо, Тори Хилл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...