2017-07-14 15 views
2

SQL Server管理が新しく、現在SSISを使用してソリューションを構築しています。 私の質問は、 "私の論理は正しい"と、ベストプラクティスについてのいくつかの小さな事柄が中心です。SSIS - 複数のSQLビューをテーブルとして定期的にインポートする

しかし、私はあなたに絵を描こう!

DBビューを使用してデータベースに負荷を軽減するアプリケーションがあります。これらのビューのデータを定期的にセカンダリデータベース/別のインスタンスに転送したい場合は、特定のアクセス許可を設定することもできます/変換/他のビューはそのデータを基に構築されます。最初に提供された私の見解は、私がそれらを得る方法ではかなり固定されています。

読んだ後、SSISを使用する方法があることがわかりました。私は自分のパッケージをビルドし始め、最初の転送を行うために "SSISのインポートとエクスポートウィザード"を使いました。

これは私の最初の質問のために、これはデータを転送する適切な方法でしょうか、SSISは仕事のための正しいツールですか?

第2に、ウィザードが複数のSQL Preperationタスクとデータフロータスクを作成したことに気付きました。 私にとっては、テーブルになる各ビューを別々のSQL Preperationタスクと分離したデータフロータスクに分割して、鮮明な画像とできるだけ多くの制御を維持することが理にかなっています。それはセットアップに時間がかかりますが(> 100ビュー/テーブル)、ウィザードの仕組みの一部をまとめてグループ化するよりもきれいに見えます。

また、準備タスクはすでにテーブルを作成しているので、2回目に実行されると失敗します。 IFEXISTS句を各クエリに追加するだけでなく、これに対して迅速な作業が可能ですか?

私が間違った方向から完全に近づいている場合は、このことについてのご意見はありがたいです。 考え方は後でシステムにSSASを追加し、これらのテーブル/データにいくつかのデータ分析を提供することです。

ありがとうございます!

+0

おそらく、私はその文を誤った形にしました。私は複数のソースビューから複数のテーブルを作成していますが、各ビューは完全に異なるカラム/データタイプを持っていますが、単純に同じソースデータベースから来ています。 –

答えて

1

データを別のインスタンスに転送する場合は、おそらくSSISが最適です。あなたの次の質問は、毎回すべてのデータをインポートするのか、新しい/更新したアイテムだけをインポートするのかを調べることです。

毎回すべてのデータをエクスポートする場合、これははるかに簡単で、エンドユーザーに影響を与えずにプロセスを完了できる適切なメンテナンスウィンドウ(夜間など)があると仮定すると、単純にデータを切り捨てて再ロードします。これは明らかにデータ転送量の増加に関連する結果をもたらす。

新しい/更新されたデータのみをエクスポートする場合は、セカンダリデータベースのものとすべて単純に比較することなく、新しい行または異なる行を実際に作り出すことができるかどうかを検討する必要があります。理想的には、ソーステーブルの信頼性が高いLastUpdateDate列、さらにはrowversion列があり、セカンダリインスタンスの対応するテーブルよりも新しい値を持つすべての行をエクスポートできます。

私はあなたに強くお勧めします更新ルートに関しては、多くの読書がありますavoid the Slowly Changing Dimension transformation like the plague

ポストのテーブル作成にifexistsを追加するなど、多数の類似したオブジェクトに対して簡単な操作を実行する場合は、繰り返しの作業がたくさんあると考えていることは間違いありません。私が見つけたこの問題を解決する最善の方法は、Bimlを使用して、メタデータに基づく繰り返しタスクを自動化する方法を学ぶことです。

Good Luck!

+0

ありがとうございました。しかし、それは、各テーブルの各準備タスクとデータフロータスクを分割することが理にかなっているということですか?またはそれらを組み合わせることはより意味がありますか? –

+0

@DirkR。私はそれが個人的な好みとあなたの解決策の必要性に大きくなると言います。個人的に私はすべてを抽出してから可能な限り単純なものにするために変換を行いますが、状況に応じて常に可能であるとは限りません。私は、あなたがやりたいことをやり遂げるためのいくつかの方法を設計し、次に最も適したものを選ぶことをお勧めします。そうすれば、さまざまなアプローチを見てより多くのことを学ぶようになるでしょう。 – iamdave

+0

基本的には、ビューA(DB1)からデータを取り出してテーブルA(DB2)にダンプし、ビューB(DB1)からデータを取り出してテーブルB(DB2)にダンプしてパッケージをスケジュールする後で決定する頻度でデータを更新/置換します。 (まだ変換はまだありません)問題は私がSSISをかなり新しくしていることです。これを間違って設定した場合、私は永遠に私を傷つけるだろうという気持ちがあります。実際にそれを使って実際の人生経験を持つ人からです。 –

関連する問題