我创建了一个SSIS包,该包将excel文件导入到SQL Server表中。
当我在计算机上本地运行SSIS程序包时,它运行没有问题,但是当我在将要安排该程序包的服务器上运行它时,出现以下错误(从文本文件中,我输出错误到使用SSIS日志记录)。
经过研究,我能找到的唯一建议是将Run64BitRuntime属性设置为false,我确实做到了,但还是没有运气。我怀疑这是导致我的错误的原因,因为该错误未指定任何有关64位的内容(就像我发现的文章一样)。
我还认为服务器可能没有适当的Excel驱动程序,但我也不认为是这种情况,因为通常错误消息会说明未注册驱动程序。
我目前没有访问服务器的远程权限。我只能将程序包上传到文件夹,然后由应用程序运行,因此我只能看到的错误消息是我创建的文本错误日志中的内容。
错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“ Envision”的AcquireConnection方法调用失败,错误代码为0xC0209303。在此之前可能会发布错误消息,并提供有关AcquireConnection方法调用失败原因的更多信息。
“ Envision”是我的excel连接管理器的名称。
我使用表达式填充Excel文件路径和连接字符串。
连接字符串表达式如下所示:
“” Provider = Microsoft.ACE.OLEDB.12.0; Data Source =“ + @ [User :: SourceFilePath] +”;扩展属性= \“ EXCEL 12.0 XML; HDR = YES \”;“
SSIS Pacakge由Windows用户名/帐户执行。我认为这可能是一个Web服务帐户。(BDS_sprtIIS)
关于如何解决仅在我的本地计算机上有效但不能在将软件包部署到的实际服务器上工作的软件包问题,是否有人有任何解决方案或建议?
我在另一个论坛上找到了以下答案,这可能是引起我问题的原因吗?他们基本上是说Excel连接管理器由于某种原因试图访问用户的temp文件夹,如果它无权访问该文件夹,则它将失败:
我也注意到Microsoft.JET.OLEDB.4.0驱动程序将尝试读取已登录用户的配置文件下的temp目录。
。
...我们使用较低级别的域帐户运行SQL代理,并使用代理帐户运行SSIS包。您是正确的,因为Procmon也为我确认了这一点。我将代理帐户权限授予了配置文件的临时目录(C:\ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp),它可以正常工作!
我没有使用SQL Server作业或代理帐户。该程序包很可能由Windows帐户执行,很可能是通过命令行脚本执行的。
Windows帐户可以访问该文件,但是我不确定它是否可以访问它的“ TEMP”文件夹(我从未在包中引用该文件夹,因此我不知道为什么它需要访问该文件夹) ...