web-dev-qa-db-ja.com

プログラマはSSISを使用する必要がありますか?

.NET開発者として、コードを書くよりもSSISパッケージを好む理由は何ですか? a ton私が現在働いている本番環境のパッケージがあり、それらは "書き込み"(おそらく描画?)と維持の両方にとって悪夢です。各パッケージは、抽象化が崩れる時点でC#とVB.NETスクリプトが混在した多色スパゲッティのボウルのように見えます。 「SQLタスクの実行」または「Foreachループ」のそれぞれが何をするかを理解するには、気の毒なものをダブルクリックし、複数のタブに散らばったリテラル値と式のツリーを参照する必要があります。

私は心を開いているので、他の優秀な開発者がコードを書くだけでなくSSISの生産性を高めているかどうかを知りたいです。 SSISの生産性が向上した場合は、その理由を教えてください。

93
Charles

私は毎日SSISを使用して、大規模なデータウェアハウスとキューブを維持および管理しています。私は2年間、100%のビジネスインテリジェンスとデータウェアハウジングを行ってきました。それ以前は、10歳の.NETアプリケーション開発者でした。

SSISの価値は、データをある場所から別の場所に移動するためのワークフローエンジンとして、制限された変換と条件付き分岐を途中で行うことです。パッケージに多くのスクリプトが含まれている場合、チームは間違ったタスクにSSISを使用しているか、SQLに慣れていないか、誇大広告に夢中になっています。 SSISパッケージのデバッグは非常に困難です。スクリプトコンポーネントは絶対的な悪夢であり、フォーマット、ループ、または最後の手段としてのみ使用する必要があります。

  1. パッケージはシンプルに、SQLタスクとデータフロータスクを維持してください。
  2. SSISの外部、できればSQLで可能な限り多くの作業を行う
  3. 変数を単一のグローバルスコープに保持する
  4. SQLを変数またはストアプロシージャに保持し、インラインにしない
  5. 構成ストア(できればSQLデータベース)に変数値を保持します
90
Kevin D. White

SSISを数回使用してみましたが、あきらめました。 IMOでは、C#で必要なことをすべて簡単に実行できます。 SSISは複雑すぎ、落とし穴が多すぎて、それだけの価値はありません。 SSISの学習に同じ時間を費やすよりも、C#スキルの向上に多くの時間を費やす方がはるかに優れています。トレーニングからより多くの利益が得られます。

また、VSソリューションの機能を見つけて維持することは非常に簡単です。 VSを使用した単体テストは簡単です。必要なのは、Subversionでソースをチェックインし、それがどのようにロードされたかを確認することだけです。 SSISパッケージの単体テストは、控えめに言っても非常に複雑です。

その上、SSISが静かにいくつかの行のいくつかの列を埋めることに失敗し、例外を発生させることなくそれらをスキップする状況がありました。トラブルシューティングと何が起こっているかを理解するのに多くの時間を費やしました。 C#での代替ソリューションの開発には1時間もかからず、2年間問題なく動作します。

49
A-K

私の意見では、SSISはETL操作専用であり、その範囲外のロジックを含めるべきではありません。

14
Christoph

私は、SSISが複数のソースからのデータを集約および結合するのに十分なソリューションであると考えたプロジェクトに取り組んだ不幸な経験がありました。残念なことに、最初はうまく機能しましたが、その後要件が変わり、最終的には間違ったツールであることがわかりました。

多分それを間違って使用していたかもしれませんが、スキーマを変更した場合、多くの困難があり、最終的にフロントエンドからORM定義を再利用してC#でカスタムツールを作成しました。すでにデータモデルがあったので、これは驚くほど簡単でした。明らかにYMMVと私は決してSSISの専門家ではありませんが、この1つのケースでは、SSISは袖をまくり上げて「ハンドコーディング」するときに多くの重複作業と頭痛の種を引き起こしました。

ですから、SSISを検討するときは、柔軟性についてよく考えます。

11
luke

SSISには独自の場所があり、その場所は一般的なプログラミングやストアドプロシージャの代わりではありません。 ETLスクール(Extract、Transform、およびLoad)から来ており、その強みはそこにあります。

古い名前(DTS、データ変換サービス)と新しい名前(SSIS、Sql Server Integration Services)はどちらも、データを操作してSQL Serverデータベースをより大きなプロセスに統合するように設計されたサービス(またはサービスセット)であることを明確にしています。

6
DaveE

プログラムでデータを移動する場合は、Rhino ETLをご覧ください。

また、私は独自のフレームワーク Fluent ETL に取り組んでいます。SSISは、CSVファイルからの単体テストデータの読み込みなど、開発に関連する単純なデータタスクには少し複雑すぎるためです。

4
Jerome

SSISはプログラムではありません。 SSISで作成する方が高速であり、管理者として非常に良い詳細な進行状況とエラー情報を取得できます。情報。

そうは言っても、SSISは、自分で説明するようなものを持っていない場合、それほど便利ではありません。

3
TomTom