この問題の解決策について、インターネットは非常に静かです。私は同じ問題を抱えていて、どこでも解決策を探しました。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 経由で抽出し、データのテスト後にロールバックする場合は、これを再配置できます。