1

出力として XML を持つストアド プロシージャがあり、SSMS で xml 出力を表示します。SSIS を使用して、このストアド プロシージャから特定の場所に XML ファイルを生成するにはどうすればよいですか。VB とスクリプト タスクを使用してこれを行うことを提案するリンクを見つけました。スクリプト タスクを使用せずにこれを行うことはできますか? また、このリンクで次の手順を試しました:

SQL Server から XML にエクスポートする方法

パッケージは SQL タスクの実行で失敗し、[SQL タスクの実行] エラー: クエリ "EXEC USP_PMAXML" の実行が次のエラーで失敗しました: "ストアド プロシージャ 'EXEC USP_PMAXML' が見つかりませんでした。" というエラーが表示されます。考えられる失敗の理由: クエリの問題、「ResultSet」プロパティが正しく設定されていない、パラメーターが正しく設定されていない、または接続が正しく確立されていない。

お時間をいただきありがとうございます。

4

1 に答える 1

3

A) 受け取ったエラーは、ストアド プロシージャが見つからないことを示しています。あなたは確認したいでしょう

  1. ストアド プロシージャが存在する
  2. ストアド プロシージャへのアカウント アクセスには実行権限があります
  3. ストアド プロシージャは、アカウントの既定のスキーマ (おそらく dbo) に存在します。{プロシージャがユーザー スキーマの下に作成される問題を見てきました[domain\user].USP_PMAXML}
  4. 使用している接続マネージャーは、正しいサーバーとカタログ (データベース) を指しています。

B) すぐに使えるアプローチを使用してスクリプト作成を避けたい場合は、Execute SQL Task. 以下に、再現のために SQL 実行タスクを示します。XML を生成するストアド プロシージャを作成します。

制御フロー

  1. データ フロー タスクを追加します。
  2. データ フロー タスク内で、OLE DB ソースを追加します。
  3. 接続マネージャーを使用するように OLE DB ソースを構成します。検証済みのストアド プロシージャは、手順 1 で正しいものです。
  4. 生成されるファイルが 1 つだけであると仮定して、派生列変換を OLE DB ソースから追​​加し、その中に出力ファイル名を定義しますC:\ssisdata\so_xmlExtract.xml。さらに、列の名前を FileName に変更すると仮定します。使用する正確な値は「C:\ssisdata\so_xmlExtract.xml」\です。文字をエスケープし、二重引用符で囲む必要があるため、スラッシュが 2 重になっていることに注意してください。

  5. この時点で、列のエクスポート変換を使用する準備が整いました。例ssisを 使用して Varbinary(max) 列をエクスポートし、 SSIS を使用してテーブル データの XML 表現をファイルに抽出する

データフロー

于 2012-10-18T18:23:06.447 に答える