Может ли пакет SSIS присоединиться к существующей внешней транзакции?

Я уже задавал смутно похожий вопрос (хотя и специфичный для запуска пакета из xp_cmdshell). Мой последний комментарий по этому поводу заключался в том, чтобы спросить, какие у меня есть варианты, если я хочу убедиться, что пакет SSIS зачисляется в транзакцию.

Итак, есть ли способ выполнить пакет SSIS и включить его в уже существующую транзакцию?

Причина этого, если для целей тестирования мы хотим:

  • Запустите пакет для загрузки данных.
  • Запустите тест(ы) для загруженных данных.
  • Откатите все загруженные данные обратно.

Спасибо, Стюарт.


person Stuart Whiteford    schedule 15.06.2012    source источник


Ответы (1)


Интернет очень тихий в отношении решения этой проблемы. У меня была такая же проблема, и я везде искал решение. SSIS также бесполезна из-за сообщений об ошибках, генерируемых при неправильном выполнении (недокументированные коды ошибок). Ответ может быть немного запоздалым, но, надеюсь, это поможет кому-то избежать напрасной траты времени. Это то, что в итоге сработало для меня.

Например, в модульном тесте оберните весь процесс в TransactionScope:

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew,new TransactionOptions(){IsolationLevel =IsolationLevel.ReadCommitted}))
        { 
          Application app = new Application();
          Package package = app.LoadPackage(packageFileName, null);

          // Can set package settings for test
          package.TransactionOption = DTSTransactionOption.Required;
          package.IsolationLevel = IsolationLevel.ReadCommitted;

          // Use this overload for execute
          DTSExecResult result = package.Execute(null, null, null, null, TransactionInterop.GetDtcTransaction(Transaction.Current));

          // Test results here inside the scope
}

Конечно, вы можете изменить это, если хотите добавить данные в базу данных, затем извлечь их через SSIS, а затем выполнить откат после проверки данных.

person Graham Moore    schedule 14.09.2012