2017-10-21 4 views
0

私は、毎晩新しいデータを入力するtable1というソーステーブルを持っています。私は4つの関係テーブルtblCus, tblstore, tblEmp, tblExpにデータをアップロードする必要があります。それを達成するためにストアドプロシージャまたはトリガを使用する必要がありますか? ありがとうソーステーブルから複数のテーブルにデータをロード

+0

SSISは、あなたがこのためにスケジュールされたジョブを作成することができ、この – Harry

+0

のための良いツールとなるでしょう。 –

+1

ジョブを作成し、scritpnを –

答えて

0

SQL Serverでは、常に猫をスキンする方法は複数あります。あなたの質問から、OLTP形式のデータベースの4つのテーブルをデータウェアハウススタイルのアプリケーションの単一の次元に非正規化することを前提にしています。

データベースが個別のインスタンスにある場合、または単純な変換のみが必要な場合は、SSIS(SQL Server Integration Services)を使用できます。

これが正しく、データベースが同じインスタンス上にある場合は、ストアドプロシージャを使用できます。

変換が大きな負荷の一部である場合は、2つの方法を組み合わせてSSISを使用してトランスフォームを編成できますが、単純にコントロールフローでストアドプロシージャを呼び出すことができます。

データフローまたはストアドプロシージャを特定の変換に使用するかどうかを決める一般的なルールは次のとおりです。データフローは私の好みですが、データフロー内で非同期変換が必要な場合は、私はストアドプロシージャに戻ります。この一般的なルールは、最高のパフォーマンスプロファイルを提供します。

特に、4つの表に対して多数のDML操作がある場合、トリガーは各変更に対して起動され、パフォーマンス低下の原因となるため、トリガーは避けてください。

+0

ありがとう、ピートとても助かりました。 – Ashraf

+0

@Ashrafもしあなたが助けられたなら、upvoteと/またはacceptを忘れないでください。ありがとう。 –

0

それは、単純な負荷である場合は、TABLE1があなたの4つのテーブル用のソーステーブルであると仮定すると、table1.

から選択することがDataFlow Taskを使用することができます。

次に、あなたがtblCus, tblstore, tblEmp, tblExpのためのあなたの定義を設定し、これらの4つの宛先を追加することができますwhere句、のような役割を果たしConditional split taskを使用することができます。私の例で

ルック: Entire package

条件分割: Conditional split

+0

それをフィルタリングする方法がわからない場合は、各テーブル用のストアドプロシージャを作成し、ストアドプロシージャを実行する4つのExecute SQL Tasksをssisで作成することもできます。それを行うには多くの方法があります:) – plaidDK

+0

答えを寄稿する時間をとってくれてありがとう。私たちが一緒に学ぶことができる自分自身のような親しい同僚のためです – Ashraf

関連する問題