SSIS C#OpenXML生成Excel文件失败
问题描述:
我使用OpenXML在SSIS包中使用C#生成Excel文件。SSIS C#OpenXML生成Excel文件失败
我这样做是因为我们没有在服务器上安装Excel,所以这应该工作,无需安装Excel。
本地工作,但转移到PROD服务器时失败。它是失败的脚本任务,我收到此错误:
Executed as user: MI\SQLAgentAccount. Microsoft (R) SQL Server Execute Package Utility Version 11.0.5058.0 for 64-bit Copyright (C) Microsoft Corporation. All rights reserved. Started: 10:46:49 AM Error: 2015-10-15 10:46:50.49 Code: 0x00000001 Source: Save To Excel Without Excel Description: Exception has been thrown by the target of an invocation. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 10:46:49 AM Finished: 10:46:50 AM Elapsed: 0.827 seconds. The package execution failed. The step failed.
我包括在参考文献中的OpenXML和WindowBase对象,并与“使用”的语句添加。
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
这些是否需要向GAC注册?或者有没有办法将它们包含在项目中(在SSIS中的脚本任务内)?在SSIS中的C#脚本任务中有“复制到本地”的设置,但不确定在SSIS内部会有什么/如何工作。
任何帮助,将不胜感激。
答
是的,你需要确保你拥有了它从GAC可用,也是集复制到C:\ WINDOWS \ Microsoft.NET \框架\
只是在做一些这方面的研究自己,发现了以下链接确认问题和解决方案: http://beyondrelational.com/modules/2/blogs/81/posts/11263/referencing-an-assembly-inside-ssis-script-task.aspx
什么是在prod服务器上运行SSIS包的用户?你使用代理来运行它吗?代理的用户必须被授予对Excel文件所在的文件夹的读取权限(如果需要,可以写入) –
它使用sa用户,但是我们有其他软件包可以创建,编辑,删除和更新这些文件夹上的文件。 – Brad