SSIS プロジェクトを使用して、データベース内のエントリと比較したいファイルがあります。
私の ControlFlow には、「スクリプト タスク」で比較したいデータベースから結果のリストを取得する「SQL タスクの実行」があります。私が知らない他のことがここで起こっていますが、「スクリプト タスク」に到達する前に for ループがあります。
初めて実行したときは正常に動作しますが、ファイルの 2 番目のエントリを試行すると、データベースの結果が失われます。データベースの結果を PreExecute() に入力することで、これを修正できました
private DataTable dt = new DataTable();
public override void PreExecute()
{
base.PreExecute();
OleDbDataAdapter adapter = new OleDbDataAdapter();
//filling results from database into DataTable object
adapter.Fill(dt, this.Variables.AccountFilterVariables);
}
しかし、今では ControlFlow でループに入るたびに、 this.Variables.AccountFilterVariables に保持されている結果が失われています
「Execute SQL Task」をループに入れることでこれを修正できますが、毎回データベースベースにクエリを実行したくありません。データベースを一度クエリして、プロジェクトの存続期間中 this.Variables.AccountFilterVariables を保持したいだけです。
どうすればいいですか?PostExecute() と関係があると推測していますが、何が原因かわかりません。