• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SSISにて、一時テーブルを使ったファイルの取り込みがうまく行かない場合がある)

SSISで一時テーブルの取り込みがうまくいかない場合の解決方法

このQ&Aのポイント
  • SQL Server2005のSSISで一時テーブルを作成し、フラットファイルを読み込む処理について、手動で作成した場合にエラーが発生する現象があります。ウィザードで生成した処理は問題なく動作するため、その差異を調査しました。
  • 手動で作成した処理で「##tblのfistload行セットが開けませんでした」というエラーメッセージが表示され、実行ができない状態になります。設定はウィザードと同じにしているため、なぜエラーが発生するのか疑問です。
  • プロパティ系の設定は問題ないと思われますが、手動で作成した処理には何か他の要素が関与している可能性があります。同じ現象を経験した方や解決方法をご存知の方がいらっしゃいましたら、ご教授いただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

実際にSQL準備タスクが作られる形で自動生成させてみると、確かに接続は「DelayValidation=False」ですが、データフロータスクの方は「DelayValidation=True」になっていましたよ。 (DelayValidationプロパティはタスクにもあるのです)

junzo_ex
質問者

お礼

ご回答ありがとうございます。 恥ずかしながら、見落としていました・・・。 確かにデータフロータスクの方は「DelayValidation=True」 となっておりました! ありがとうございました!!

その他の回答 (1)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

今回も私ですみません。 データインポートウィザードで作成されるパッケージを確認してみるとわかりますが、データフロータスクのみが生成されます。 つまり、「すでに存在するテーブル」に対する処理として作られるわけです。もちろん、一時テーブルがない状態では実行できません。 今回作成されているパッケージでは、一時テーブルは処理のステップのの中で作成されるわけですから、実行開始時には存在しないわけです。SSISはデフォルトでは今から行う処理が実行可能かを検証します。 したがって、今回のようなケースでは当然検証エラーになります。 これを回避するオプションはデータフロータスクにある「DelayValidation」です。これをTrueにすると、最初の検証でエラーが起こってもそのエラーを保留し、処理を実行します。これを一時テーブルを使用しているすべてのタスクでTrueにしてみてください。

junzo_ex
質問者

補足

ご回答ありがとうございます。 > 今回も私ですみません。 とんでも無いです! すみません、データインポートウィザードで作成した パッケージについて、説明が不足しておりました。 ウィザードにて、##tblを新規作成してから フラットファイルを取り込むように設定すると、 「準備SQLタスク」というものが生成され、 このタスクにて一時テーブルが作成されます。 そうすると、パッケージの流れとしては以下になります。 準備SQLタスク(一時テーブル作成)⇒データフロー (もちろん、実行前には一時テーブルは存在しない状態) ここで、 以前ご教授いただいた「RetainSameConnection=True」を 設定することで、無事、一時テーブルにデータが投入されます。 しかし、これと同じパッケージを手動で作成すると、 どうしてもうまくいかないのです。。 ちなみに、自動生成されたパッケージは、 今回ご教授いただいた「DelayValidation」は「False」のままで、うまく行きます。 (しかし、今回このプロパティを教えて頂けたのは非常にありがたいです!) もし、他に情報をお持ちでしたら、引き続きご回答頂けると幸いです。

関連するQ&A