2

私の SSIS ジョブでは、一連の行を蓄積し、処理が正常に完了したときにそれらすべてを一時的にコミットする必要があります。これが純粋な SQL の場合、トランザクション内で一時テーブルを使用します。SSIS には、これを複雑にする多くの問題があります。複数のコンポーネントで同じトランザクションを共有することは難しく、設計時に存在しない一時テーブルを持つことは苦痛です。

この目的で SSIS 内で Recordsets を使用すると、他の問題が発生します。私の理解では、「SQL実行」コンポーネントは実行時にレコードセットを再初期化するため、それを使用して追加の行を追加することはできません。インメモリ レコードセットを参照する OLE DB 接続を作成する方法はありますか?

この結果を達成するためのより良い方法はありますか?

4

1 に答える 1

2

もっと良い方法があります。あなたが試した/検討したと言ったように、一時テーブルを使用することをお勧めします。SSIS で一時テーブルを使用するためのキーは次のとおりです。一時テーブルなしで) パッケージの途中で。2. 作成済みの一時テーブルを使用してパッケージを設計する必要があります - 設計するために通常のテーブルとして作成する必要がある場合でも。デプロイの準備ができたら、それに関係するコンポーネントのテーブル名を変更し、それらのタスクの DelayValidation プロパティを False に設定します。(これにより、パッケージが最初に開始されたときにテーブルが存在しないため、パッケージが失敗するのを防ぐことができます。)

于 2010-03-23T06:36:47.523 に答える