2015-07-09 2 views
1

Я следующую последовательность Контейнер внутри цикла ForEach в моем SSIS пакет:Откат транзакции не работает в SSIS

enter image description here

Я занят тестирования ROLLBACK TRANSACTION заявление, он выполняет хорошо, но это не откатывается.

Не уверен, что мне ничего не хватает?

Заранее спасибо.

EDIT:

Это как поток данных выглядит в моей Sequence контейнер:

enter image description here

+0

Можете ли вы показать код, который вы имеете внутри компонентов Петли контейнера Foreach в? Кроме того, каков полный код в начале банковского счета и откат банковского счета? – Zsuzsa

+0

В вашем диспетчере соединений вы указали «RetainSameConnection = true»? По умолчанию используется значение false. – billinkc

+0

@billinkc yes Я изменил это свойство на true – Gericke

ответ

0

Я взял альтернативный маршрут, чтобы убедиться, что мой провал над работами. То, что я сделал, это добавить столбец в мои таблицы, в котором будет храниться GUID, а когда есть ошибка, я просто удаляю записи из таблиц, где этот идентификатор GUID равен тому, который используется в этом сеансе. Я добавил GUID в мой оператор select, который будет использовать мой контейнер ForEach, а затем я напишу его в таблицу.

SELECT 
    ReconMedicalAidFile.fReconMedicalAidFileID 
    ,ReconMedicalAidFile.fReconMedicalAidID 
    ,ReconMedicalAids.fMedicalAidID 
    ,ReconMedicalAidFile.fFileName 
    ,ReconMedicalAidFile.fFileLocation 
    ,ReconMedicalAidFile.fFileImportedDate 
    ,ReconMedicalAidFile.fNumberRecords 
    ,ReconMedicalAidFile.fUser 
    ,ReconMedicalAidFile.fIsImported 
    ,CONVERT(varchar(50),NEWID()) AS 'Session' 
FROM ReconMedicalAidFile 
INNER JOIN ReconMedicalAids ON ReconMedicalAidFile.fReconMedicalAidID = ReconMedicalAids.fReconMedicalAidID 
WHERE (fIsImported = 0) AND (fNumberRecords = 0) 

Я добавил этот код в Task Script, который будет отображать выбранный GUID выше:

DELETE FROM BankmedStatments 
WHERE fSession = ? 

DELETE FROM ReconMedicalAidData 
WHERE fSession = ? 
Смежные вопросы