SSISに関しては、私はまだ初心者であると言って、これを序文にしましょう。Excelで作成され、ユーザーのリストに電子メールで送信される13のクエリを持つ現在のMS Accessプロセスを置き換えようとしています。
私の SSIS パッケージは、レポート名、メール配信リスト、レポート データを取得し、csv ファイルを作成してから、それぞれのメールを送信する必要があります。
SQL Server で以下を作成しました。
- レポートを含むテーブル - それぞれに ReportId があります
- ユーザーのメールアドレスを含むテーブル
- ユーザーを各レポートにリンクする結合テーブル
- ReportId を渡すとストアド プロシージャが作成され、電子メール配信リストと、電子メールを送信するときに使用するレポートの詳細が返されます。
- ReportId を渡すストアド プロシージャを作成しました。代わりに、そのレポートの値を取得します。各レポートには、さまざまな列のデータを返すさまざまなクエリがあります。
また、次のことを行う SSIS パッケージの作成も試みました。
- を使用して、
Execute SQL Task
アクティブなレポート ID のリストを取得します - 各レポート ID をループするための
Foreach Container Loop
セットADO Enumerator
- レポートの
Execute SQL Task
詳細と各レポート ID の電子メール配信リストを返す .
次にData Flow Task
、ループ内に配置し、ストアド プロシージャを実行して各レポート ID のレポート データを返そうとしましたが、エラー メッセージが表示されます。
Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred.
Error code: 0x80040E55. An OLE DB record is available.
Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E55 Description: "Column does not exist.".
このエラーは、私の列が各レポートで同じではないためだと推測しています。その場合、どのように進めるかについて何か提案はありますか?
各レポートを確認するには、SSIS パッケージでどの手順を使用する必要がありますか? 各レポートを実行するには、個別の SSIS パッケージを作成する必要がありますか?
これを 1 つのパッケージで実行できる場合、生成する csv レポートごとにフラット ファイル接続マネージャーを作成する必要がありますか?