0

初めてSSISを勉強しています。ステージング データベースからデータ ウェアハウス内の複数のテーブルに複数のテーブルをロードしようとしています。私のステージング データベースは、すべてのソース データベースからすべてのテーブルがコピーされたデータベースに他なりません。各データ フロー タスクでは、1 つのソース テーブルに 1 つの宛先テーブルしか接続できないことがわかりました。ソース データベースにあるテーブルの数と同じ数のデータ フロー タスクを使用する必要がありますか? これを行うための簡単で効率的な方法はありますか?

私の理解では、宛先データ ウェアハウスとして機能し、ステージング データベースからデータを受け取る、SQL Server で作成された空の Dim テーブルと Fact テーブルを含む空のデータベースが必要です。したがって、この空のデータ ウェアハウスは既に作成しています。助けてください。

4

1 に答える 1

5

DFT (データ フロー タスク) でソースと宛先を 1 つだけ持つ必要があるという規則はありません。

DFT 内に複数のソース コンポーネントと宛先コンポーネントを含めることができます。ただし、1 つの DFT にソースから宛先へのコンポーネントが多すぎると、メモリが不足する可能性があります。実行前フェーズでは、SSIS は個々の S2D コンポーネントに割り当てるメモリを決定する必要があります。メモリ消費量が多すぎると、サーバーはすべてのコンポーネントに十分なメモリを付与できない可能性があります。これにより、待ち時間が長くなる場合があります。

EngineThreadsただし、データ フロー エンジンが作成して並行して実行できるスレッドの数を定義する、DFT と呼ばれるプロパティがあります。MSDNによると:

このプロパティのしくみを理解するには、3 つのデータ フロー タスクを含むサンプル パッケージを検討してください。各データ フロー タスクには、ソースから宛先への実行ツリーが 10 個含まれています。各データ フロー タスクで EngineThreads を 10 に設定すると、30 個の実行ツリーすべてが同時に実行される可能性があります。使用可能なプロセッサーの数よりも多くのスレッドを実行すると、スレッド間のコンテキスト切り替えが頻繁に行われるため、パフォーマンスが低下する可能性があります。

そのため、個別のデータ フロー タスクを作成して操作を実行することをお勧めします。

注: 複数のソースからデータを取得する場合は、1 つのデータ フロー タスクで行うことができます。

于 2013-04-15T07:27:31.620 に答える