2016-09-01 12 views
0

私たちは大量生産のMSSQLデータベース(mdf appx。400GB)を持っており、テストデータベースを持っています。すべての表、索引、ビューなどは互いに同じです。私は、この2つのデータベースのテーブル内のデータが一貫していることを確認する必要があります。だから私はすべての新しい行を挿入し、毎晩生産からのテストDBにすべての更新された行を更新する必要があります。SSISパッケージを動的に実行するには?

SSISパッケージを使用して、すべてのテーブルの更新された行と新しい行をチェックすることによって、データを一貫性のあるものにするアイデアが出ました。私のSSISフローは、

SSISのパッケージは、テーブルごとに別々に用意されています。

  1. Imテーブル全体を取得するのではなく、最後の1日の行を取得するために、テーブルにタイムスタンプ値を取得しています。
  2. 私は生産のテーブルの行を得ます
  3. そして、私はこのデータをテストデータベーステーブルのデータと比較するために 'Lookup'ツールを使っています。
  4. 次に、条件付きスプライトを使用して、データが新しいか更新されたかを手掛かりにします。
  5. データが新しい場合、このデータを宛先 5_2に挿入します。データが更新された場合、私は宛先テーブルのデータを更新します。

enter image description here

データフローが画像にMTRuleとSTBranchパッケージに

ある問題は、各テーブルのすべてのこの単一の流れを作成繰り返し、IMと私はこのように300以上のテーブルを持っています。すべての単一のテーブルには、独自の列とPK値が、私のデータを持っている:

動的にこれを行うにはSSISのいずれかの方法はあり

PSを、

はイム何を求めている:(それは時間と時間かかります?フロー・スキーマが常に同じである。。(下記)

enter image description here

+0

なぜ夜間バックアップの復元は、テストDBの作業ですか?テスト用のものであれば、本番データに過負荷をかけることはできません。あなたがテストでの洗浄の要件がありますか? –

+0

私のprod sqlはクラウド上にあるので、バックアップ・リストア操作は実行できませんが、テストSQLは実行できません。また、いくつかの理由で、バックアップファイルをクラウドからテストサーバーに移動できません。 –

+0

データの量は?すべてのメジャーテーブルに対してデルタ属性が設定されていますか?大きなボリュームを持つすべてのテーブルをフルロードしようとすると、それもコストのかかる操作になります。 –

答えて

1

BiMLScriptを見ると、メタデータに基づいてパッケージを動的に作成できます。

+0

はい、それは正しいと最も論理的な、簡単な方法と思われます。ありがとう。 –

0

私はこれを達成するための最良の方法は、式を使用することであると考えている。彼らは、動的に送信元と送信先を設定することができエンパワー。 一つのPOSS

  • このテーブルをループし、パッケージを定義するには
  • があなたのメインパッケージを呼び出してSQL文を解析し、すべてのテーブル名やPK列を格納する表を作成し、次のようにibleソリューションがあるかもしれません
  • があなたのデータフロー
  • 該当する場合のデータソースとしてのstmtを使用し、それへのstmtを渡し、
(コンフィグテーブルに別の列を)だけでなく、パラメータとして宛先表を渡します

これは、私がいくつかの非常に巨大なテーブルを処理した方法です。データは20個のテーブルからフェッチし、1個のテーブルに移動する必要がありました。

+0

私は確かにそれを試みます。私は結果を教えてくれるでしょう。ありがとう –

+0

私はちょうどこれらのパッケージの一つで作業しなければならなかったので、ここでさらにヒント:ソースでは式は必要ないが "変数からのSQLコマンド" - stmtにパラメータを置く必要があります。 – Tyron78

0

tablenameをパラメータとして使用してCRUDを実行するストアドプロシージャを作成する方がよい場合があります。

次に、SSISのFOR EACHコンポーネントでストアドプロシージャを呼び出します。

0

なぜSSISを使用する必要がありますか?

tablenameをパラメータとして使用してCRUDを実行するストアドプロシージャを作成する方がよい場合があります。 SSISのFOR EACHコンポーネントでストアドプロシージャを呼び出します。

実際には、ストアドプロシージャを使用してすべてを行い、SQLエージェントジョブでスケジューリングできる場合があります。

関連する問題