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. 假设应该只生成一个文件,从 OLE DB 源中添加一个派生列转换,并在其中定义输出文件名,我假设它是C:\ssisdata\so_xmlExtract.xml. 我将进一步假设您将该列重命名为 FileName。您将使用的确切值是 "C:\ssisdata\so_xmlExtract.xml" 请注意斜杠加倍,因为我们必须转义\字符并用双引号括起来。

  5. 此时,您已准备好使用导出列转换。示例Export Varbinary(max) column with ssisUsing SSIS to extract an XML representation of table data to a file

数据流

于 2012-10-18T18:23:06.447 回答