プログラマーはSSISを使用する必要がありますか?使用する場合、なぜですか?[閉まっている]


94

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

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


4
方法はわかりませんが、SSISは、データウェアハウスを作成するために記述した手動のコードよりもはるかに高速です。それは仕事のために設計されたツールです-タスクをマスターパッケージから実行される子パッケージに分解してみてください
Mr Shoubs

1
同様の質問へのリンク:stackoverflow.com/q/690123/327165
Ilya Berdichevsky

5
ちょうどこれに遭遇しました。私はいくつかの問題のあるSSISパッケージを維持するために作業しており、有用な作業をC#プログラムに抽出するための逆コンパイラーを作成しました。 code.google.com/p/csharp-dessist
テッドスペンス

5
私の経験では、「長い」または「複雑な」スクリプト、あるいは多くのスクリプトがある場合、SSISは苦痛になる可能性があります。コンソールアプリのデバッグははるかに簡単です。SSISでは、スクリプトを単独でデバッグすることはできません。スクリプトが原因で生成されるエラーメッセージは不可解であり、エラーの原因となった正確な行を確認することはできません。IMO、プロジェクトのニーズを標準のSSISコンポーネントで満たすことができる場合は、SSISが適しています。ただし、そのためにはSSISコンポーネントの制限を知る必要があります。- 「メール送信タスクが」ほとんど役に立たない理由Eg.This映像ショーあなたyoutube.com/watch?v=IlUzkMPYDSk
スチーム

3
この質問には7つの回答があるため、議論、議論、投票、または拡張ディスカッションは求められませんでした。開いたままにしませんか?
Michael Freidgeim 2017年

回答:


94

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

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

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

1
SSISで発生した問題により、もっと偏った答えを出したでしょう(まるで私の質問の調性からは分からないように:))。いい答えだ、ケビン。
チャールズ

6
2002年にリリースされた場合、.NETを10年間どのように使用しましたか?
ブレイディホルト

7
[引用]マイクロソフトは、1990年代後半に.NET Frameworkでの開発を当初は次世代Windowsサービス(NGWS)の名前で開始しました。2000年後半までに、.NET 1.0の最初のベータ版がリリースされました[/ quote]そのため、彼はおそらくベータ版で作業していたでしょう。
nitefrog 2012

質問は2010年に回答されたので、2年間のBIを解除してから、さらに10を発表すると、ベータ版リリースの2年前の1998年を示します。そうでなければ、良い答えです!:)
finoutlook 2012年

はい、グローバルスコープは理にかなっています。ローカルにして他の場所にアクセスしたい場合は、問題があります。ローカルのスコープを単にグローバルに変更することはできません。代わりに多くのクリックと削除を行う必要があります。10〜15人の地元住民がいる場合、これは面倒になります。
スチーム

52

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

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

さらに、SSISがいくつかの行の一部の列にデータを入力せず、例外を発生させずにスキップするだけの状況がありました。トラブルシューティングと何が起こっているのかを理解するのに多くの時間を費やしました。C#で代替ソリューションを開発するには1時間もかからず、2年間問題なく機能しました。


あなたのポイントをありがとうアレックス。これが私が問題だと思うものの例です-stackoverflow.com/questions/21616435/…
スチーム

2
ETL開発者が知っておく必要があるすべてのC#/プログラミングトピックのリストはありますか?例えば。LINQ、SqlDataReader、DataTableなど。私も、SSISは複雑なタスクには適していないと感じています。簡単な「コピーと貼り付け」プロジェクト/タスクがある場合、SSISが最適なツールになる可能性があります。
Steam 14

@blasto Rhino ETLを試してみましたか:ayende.com/blog/3102/rhino-etl-2-0
AK

アレックス、ジェロームの答えもRhino ETLを示唆していました。それは私にはあいまいなようです。したがって、ドキュメント、サポート、チュートリアルが不足しているため、それを使用することをためらっています。その上、たった1人の開発者がそれに取り組んでいるようです。これは、ツールに対する私の自信を低下させます。楽しみや好奇心からこれを試しますが、実際のプロジェクトには使用できません。ありがとう。
Steam

Rhino ETL(純粋なC#付き)のチュートリアルが必要な場合は、ここに1つあります-codeproject.com/Articles/34556/Write-ETL-jobs-in-pure-C
Steam

14

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


8
ETL = Extract Transform Load
Christoph

3
それが私の感じです。今回のケースでは、SSISを使用して、価格情報を含む電子メール(またはSFTP)CSVなどを作成しています。分岐、埋め込みスクリプトなどはかなり恐ろしいです。SSISでデータを移動しただけの場合は、それほど悪くはないでしょう。
Charles

1
あなたの答えはもう少し深みがあると思います。
Steam

3
ETLのTにロジックが含まれていませんか?Just a
Thought

データのシェーピング/ルーティングにのみ関連している場合は、確認してください。しかし、ビジネスロジックは避けます。
クリストフ

11

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

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

したがって、SSISを検討するときは、柔軟性についてよく考えます。


7
同じ気持ちをいくつか共有しています。コードのリファクタリングは簡単です...ビジュアルDSLではそれほどではありません。
Charles

ルーク、あなたのプロジェクト要件の概要を教えてください。ありがとう。
Steam 14

@blasto複数のデータベースからのデータを統合し、組み込みの確率的文字列照合ユーティリティのいくつかを使用して、さまざまなシステム(本質的にはCRMデータベース)からのデータをマージしようとしていました。5年以上前だったので、詳細は覚えていません。
luke

あなたが.netショップであり、データウェアハウジングの目的でデータを移動することに関与している場合、SSISはそれを十分に理解している場合にのみ役立ちます。.netの教祖であるが、SSISを完全に理解していない多くの人々を見てきました(そして私は彼らを責めません)。SSISは、十分にそれをよく知っている人を必要とします。さもなければ、非効率で正しいことを行えないパッケージを書くことになります。
rvphx

6

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

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


この回答がどのようにして多くの賛成票を獲得するかはわかりません。SSISがプログラミング言語の機能を提供できない理由については触れていません。それは私には意味がありません。SSISがプログラミング言語と一致しない例の1つはデバッグです。どうやら、SSIS 2012はそれを変えます。ですから、ツールはよりプログラマーフレンドリーなものになりつつあります。
Steam

>> SSISがプログラミング言語と一致しない例の1つ...同意する-プログラミング言語ではない。それはまともなETLツールです。
DaveE 2014

4

プログラムでデータを移動する場合は、Rhino ETLを確認することをお勧めします。

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


Rhino ETLはあいまいで、現時点でSOに関する質問は24問しかありません-stackoverflow.com/questions/tagged/rhino-etl。知識と経験があれば、ETLにはC#で十分だと思います。
Steam 14

1
Rhino ETLの一般的な代替品はありますか?
Steam 14

3

SSISはプログラムではありません。SSISの方が多くの修正が高速であり、管理者として非常に詳細な進行状況とエラー情報を取得できます。これは、SSISが解決しようとしているシナリオで非常に役立ちます。情報。

そうは言っても、SSISは、説明が必要なものがない場合、それほど有用ではありません。これらは何かのためのものであり、一般的なプログラミングに過度に取り組むと、厄介なものになります。


2
SSISが1つのシナリオで開発を早め、他のシナリオでは遅くする方法の例を教えてください。
Steam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.