如何解决SSIS Excel Connection Manager错误0xC0209303?


9

我创建了一个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文件夹,如果它无权访问该文件夹,则它将失败:

https://social.msdn.microsoft.com/Forums/sqlserver/zh-CN/da77919c-0161-4eb5-bf89-7107d839435a/the-acquireconnection-method-call-to-the-connection-manager-excel-connection-经理失败?论坛= sqlintegrationservices

我也注意到Microsoft.JET.OLEDB.4.0驱动程序将尝试读取已登录用户的配置文件下的temp目录。

...我们使用较低级别的域帐户运行SQL代理,并使用代理帐户运行SSIS包。您是正确的,因为Procmon也为我确认了这一点。我将代理帐户权限授予了配置文件的临时目录(C:\ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp),它可以正常工作!

我没有使用SQL Server作业或代理帐户。该程序包很可能由Windows帐户执行,很可能是通过命令行脚本执行的。

Windows帐户可以访问该文件,但是我不确定它是否可以访问它的“ TEMP”文件夹(我从未在包中引用该文件夹,因此我不知道为什么它需要访问该文件夹) ...

Answers:


8

有两个问题阻止软件包在服务器上运行。以下是2个问题以及我找到的解决方案。

  1. 默认情况下,该程序包由使用64位DTexec实用程序的应用程序执行,但是需要使用该实用程序的32位版本运行该程序包,以便能够通过Excel连接管理器正确访问Excel文件。

    我创建了一个“包装程序” SSIS程序包,该程序包使用一个执行过程任务来调用32位(而不是64位)DTExec实用程序,并传递命令以打开原始程序包。

    执行流程任务

  2. 我还需要安装32位版本的Microsoft Access数据库引擎2010 Redistributable

进一步阅读:

未注册Microsoft.ACE.OLEDB.12.0(堆栈溢出)


2

安装32位Access Engine并以32位模式运行对我来说很有效!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.