2

異なるサーバー (リンクではない) の 2 つのデータベースからデータを取得する必要がある SSIS アプリケーションがあります。2 つのデータベース間で一致する名前と DOB レコードを取得し、その結果を使用してテーブルを挿入/更新する必要があります。私の最初のアプローチは、OLE DB ソースを使用してから Merge Join し、結果をレコードセットに入れることです。次に、制御フローで、レコードセットの結果を使用してテーブルを挿入/更新します。しかし、制御フローでレコードセットが表示されません。別の解決策は、一時テーブルを作成することです。ただし、一時テーブルは各サーバーの tempdb データベースに存在するため、表示されません。この問題に対するより良いアプローチは何ですか?

4

2 に答える 2

1

この場合、作業テーブル用にデータベースを保持するか、それらの作業テーブル用のスキーマを作成します。

次に、中間結果を保持するテーブルを切り捨てる SQL 制御フロー タスクを追加します。この後、中間結果セットをテーブルにロードし、操作を実行し、オプションでテーブルを再度切り捨てます。

レコードセットの宛先は、小さなデータセットの場合に適しています。ただし、メモリに収まらない大規模なデータセットに使用する場合は、非常に遅くなります。

ワークスペースとして機能するデータベース/スキーマがない場合は、RAW ファイルを使用して中間結果を保持できます。それらも非常に高速です。

于 2012-06-14T23:34:44.553 に答える
1

とはどういう意味put the results to recordsetですか?

結合を使用してデータ フロー上の 2 つのソースを結合する場合、結合上のその "レコードセット" は、現在のデータフロー中にのみ使用できます。データフローが終了した後の制御フローでは使用できません。

宛先DBに結果セットを挿入できないのはなぜですか? 同じデータ フローで他の変換操作を実行し、その結果を変換先データベースに挿入できます。

または、データを挿入する前に制御フローでのみ実行できる何かを本当に実行する必要がある場合は、はい、oleDBDestination を使用して宛先の一時テーブルにレコードセットを挿入し、別のデータフローにアクセスできます (非常に良いアプローチですが)

于 2012-06-12T19:25:50.240 に答える