データベースT1にテーブルT1のデータがあります。SSIS宛先のパラメータを使用してあるDBから別のDBにエクスポート
データベースDB2のテーブルT2に移動する必要があるのは、フィールドF1が特定の値に等しいT1の行だけです。
これらの値は、データベースDB2のテーブルTCにあります。 DB1はDB2を参照することはできません。したがって、私のdtsxのDataFlowコンポーネントでは、T1とTC間の結合でクエリを書くことができません。
私は2つの可能なパスを参照してください。私は最初のT2
にそれらを注ぐ代わりに取得するSQLクエリを持つ前にdtsxでそれらをフィルタリングし、その後T1からすべての行をインポートすることができ
をDB1からのデータは、テーブル値のあるパラメータを受け入れるDB1のストアドプロシージャを書き込むことができました。その後、私のパラメータ(例では1,2,4)をTVPに入れて呼び出すことができますこのストアドプロシージャ。
私はこのような種類のテーブルをインポートする必要があります。したがって、ソリューション2は実際にはあまりに複雑すぎて複雑なようです。ソリューション1は、まずすべてをインポートしてから、インポートされたものの一部を破棄して、あまりにも無駄な作業を行うようです。
この場合、ベストプラクティスまたはスマートなトリックがありますか?
ありがとうございます
あなたの提案に感謝します。基本的には私のソリューションナンバー1でやりたかったようです。私に疑念を抱かせるのは、多くのデータが最初に読み込まれて破棄されるということです。あなたのソリューションでは、大部分のデータがDB1からDB2に移動するのか、それとも最初にフィルタリングされるのかを知りたいのですが?私はまだ最終的なアーキテクチャはわかりませんが、SSISサーバーは第3の物理マシン(SRV3)にあると言います。また、フィルタを適用すると大部分のデータが削除されるとします。 –
[続き]もちろん、私は1台のサーバーから他のサーバーへのデータ移動量を最小限に抑えたいと思います。@ thotwielder:あなたのソリューションはDB1からSRV3へのすべてのデータを移動しますか?または、大量のデータがDB1からSRV3に移動するのを防ぐフィルタリングですか? thx –
データ・フィルタリングはマージ・ジョインに含まれているため、DB2ではなく(DB2とSSISが同じサーバー上で実行されていない場合)あなたのssisが実行されている場所で実行されています。したがって、DB2は最終結果セットのみを受け取ります。フィルタリング(マージジョイン)はどこかで起きているはずですので、あなたのケースではssisが実行されているSRV3にあります。 – thotwielder