11

私はSSIS/C#の初心者です(私は通常Java開発者です)ので、これが本当にばかげた質問である場合はお詫びします。

基本的に問題はこれです。データをロードして従来のフラットファイル形式にエクスポートする2つのデータフロータスクがあります。フォーマットはスクリプトタスク(C#)によって行われます。

私がやりたいのは、2つの間でいくつかの共通のコードを共有することです。たとえば、共通の基本クラスを作成し、それを2つの異なるスクリプトタスク用に拡張することができます。

ただし、SSISは実際にはこれに対応していないようです。

私がやりたいことを達成する方法があるかどうか誰かが知っていますか?

4

5 に答える 5

12

SSIS から直接これを行う簡単な方法がないことは間違いありません。

最近のプロジェクトでは、2 つの異なるアプローチを採用しましたが、どちらも何をする必要があるかによってかなりうまく機能しました。

  1. ユーティリティ クラスを (単純なクラス ライブラリとして) 作成し、スクリプト タスクから参照します。これは、他の種類の参照とほとんど同じように行われます。.NET 3.5 を使用する場合は、SSIS の既定値が 2.0 であるため、スクリプト タスクでバージョンを手動で更新する必要があることに注意してください。また、ユーティリティ アセンブリで何らかの方法で再利用できるようにする (ハードコードされた変数名などに依存しない) 場合でも、パッケージには、ユーティリティ スクリプトを使用するためのかなり大量の「セットアップ」ボイラープレートが必要であることがわかりました。

  2. カスタム データ フロー コンポーネントを作成します。これははるかに複雑なプロセスですが、最終的にはコードの重複を回避するという点で最善を尽くします。一般に、実際のデータ フローのコーディングはかなり単純で、スクリプト コンポーネントとそれほど違いはありませんが、必要なさまざまなセットアップ コードにより、作業が複雑になる傾向があります。何か問題が発生した場合の SSIS のサポートもあまりありません。私たちのプロジェクトで多くの探偵の仕事につながりました。

何かを頻繁に使用する予定があり、ボイラープレート コードをできるだけ削除することに専念している場合は、2 を選択することをお勧めします。あちこちで使用されている場合は、1 の単純なアプローチを検討してください。

于 2010-02-01T15:15:06.773 に答える
2

SSIS スクリプトで .NET アセンブリにアクセスできることは確かです。したがって、このようにすることができます。SQL Server Centralの記事「SSIS を使用した .NET アセンブリへのアクセス」を参照してください。

于 2010-02-01T15:12:06.963 に答える
0

これを機能させるには、アセンブリまたは Web サービスを作成する必要があると思います。

于 2010-02-01T15:12:33.120 に答える
0

これで問題が完全に解決されるわけではありませんが、必要なたびにすべてのクラスを再作成する必要がなくなります (また、現在のプロジェクトで参照されているアセンブリをデプロイしたくありません)。まず、クラスのマスター コピーが必要です。以下の同じプロセスを逆に使用して、既存のスクリプト タスクからクラスをコピーできます。

  1. スクリプト タスクのエディターを開き、プロパティ エクスプローラーでプロジェクト ファイル ( st_[Guid] ) をクリックします。[プロパティ] ウィンドウにプロジェクト フォルダーの場所が表示されます。(この場所は、スクリプト タスクを編集するたびに再作成されます)

  2. エクスプローラーで、クラスをこのフォルダーにコピーします

  3. プロジェクト エクスプローラーで、[すべてのファイルを表示] アイコンをクリックします。

  4. ファイルを右クリックして、プロジェクトに追加します

于 2013-03-04T14:55:00.923 に答える
-1

おそらくこれに答えるには遅すぎるかもしれませんが、ソリューションをクリックしてそこにクラスを追加できます。次に、スクリプトに入ると、既存のオブジェクトを追加して、以前に作成したクラスを検索することができます。私にとっては、プロジェクトのソリューションによって特定されました。このための展開などは行っていませんが、少なくとも個々のスクリプトを介してクラスにアクセスできます。

于 2013-06-24T15:59:42.397 に答える