1

この質問は、中規模のインポートに対する SSIS プロジェクトのベスト プラクティスに関する純粋に組織的な質問になります。

そのため、新しいデータで継続的に強化されているソース データベースがあります。次に、ソース データベースのデータを時々ロードするステージング データベースを用意して、ソース データベースのコピーで作業し、現在のシステムを移行できるようにします。私は実際に SSIS Visual Studio プロジェクトを使用してこのデータをインポートしています。

私の問題は、プロジェクトの実際の設計が実際には最適ではないことに気付いたことです。このプロジェクトを SQL Server に移動して、Visual Studio プロジェクトを手動で実行する代わりにインポートをスケジュールできるようにしたいと考えています。つまり、実際のプロジェクトをクリーンアップして最適化する必要があります。

したがって、基本的に、各テーブルのプロセスは単純です。テーブルを切り捨て、ソースから抽出し、宛先にロードします。そして、私は約200のテーブルを持っています。ソース データベースは一度に 1 つの接続しか受け付けないため、抽出を並列化することはできません。では、そのようなプロジェクトをどのように設計しますか?

パッケージごとに 1 つのデータ フローを使用することを推奨している Microsoft のドキュメントを読みましたが、200 の異なるパッケージを管理することは非常に不可能に思えます。一方で、200 個のデータ フローを含む 1 つのパッケージも扱いにくいように見えます...


編集 21/11:

このプロジェクトを開始するときに使用したかった最初のアプローチは、テーブル名のリストを反復処理してテーブルを自動的に抽出することでした。ソース テーブルと宛先テーブルのスキーマ オブジェクト名がすべて同じであるが、ソース データベースと宛先データベースが異なるベンダー (BTrieve と Oracle) のものである場合、これはうまくいく可能性があります。また、命名に関する制限も異なります。たとえば、BTrieve は名前を予約せず、30 文字を超える名前を許可しますが、Oracle はそうではありません。そのため、半自動の列マッピングを使用して 200 のデータ フローを手動で作成することになりました (ほとんどは自動でした)。

宛先データベースの CREATE TABLE クエリを生成するとき、方法論を自動化できる場合に備えて、新しいスキーマ オブジェクト名を生成するメソッドを含む再利用可能な C# ライブラリを作成しました。外部の .NET ライブラリを使用できるパッケージを生成するためのカスタム ツールがあれば、これでうまくいくかもしれません。

4

3 に答える 3

2

パッケージ生成ツールとしてBIDS Helperの BIML (Business Intelligence Markup Language)を調べたことはありますか? これを使用して、すべて同じ基本的な切り捨て-抽出-読み込みパターンに従う複数のパッケージを作成しました。BIML に組み込まれているものよりも少し賢くする必要がある場合は、C# コードを処理に埋め込む機能を追加するBimlScriptがあります。

問題の説明から、1 つの BIML ファイルを記述して、200 個の個別のパッケージを生成できると思います。おそらくこれを使用して、200 のデータ フロー タスクを含む 1 つのパッケージを生成することができますが、私は SSIS をそこまで強くプッシュしようとしたことはありません。

于 2012-11-20T22:33:18.127 に答える
0

基本的に、それぞれ 20 のデータ フロー タスクを持つ 10 の子パッケージを作成し、これらの子 pkg をトリガーするマスター パッケージを作成できます。親から子への構成を使用して、単一のXML ファイル構成ファイルを作成します。パッケージ。この方法では、200 個のパッケージまたは 200 個のデータ フロー タスクを含む単一のパッケージを使用する場合と比較して、保守性が向上します。

于 2012-11-20T09:00:58.647 に答える
0

次のリンクは役に立つかもしれません。

ステージング プロセス用の単一の SSIS パッケージ

お役に立てれば!

于 2012-11-20T09:54:32.180 に答える