无法初始化OLE DB提供程序的数据源对象" Microsoft.ACE.OLEDB.12.0"对于链接服务器"(null)" (在sproc / package / job中使用)

时间:2017-03-14 23:33:30

标签: sql-server oledb

尝试运行使用OpenRowSet从使用OLEDB从Excel文件中提取数据的SSIS包时,我收到此消息。

我尝试了StackOverflow上提到的许多不同的解决方案 - 包括:

  • 重新安装OLEDB驱动程序

  • 检查对临时文件夹的访问权限(我将临时文件夹系统变量更改为特定文件夹,而不是通过用户名+动态访问所有人到该文件夹​​)

  • 在查询窗口中检查OpenRowSet查询的执行/执行使用它的sproc /执行引用sproc的包/执行引用上述包的作业 - 在我的情况下我可以得到查询直接作为查询运行我只是以管理员身份打开SSMS。

我可以在我们的珠三角环境中重新解决这个问题(我们还没有推出,所以PRD实际上是一个测试环境),而不是我们的STG环境。我进行了模式比较,以确保代码库在不同环境中是相同的。

我们使用oledb.12驱动程序(而不是oledb.16)并使用驱动程序获取元数据,然后导入实际记录。

帮助我的答案(我无法在网上找到......)在

之下

1 个答案:

答案 0 :(得分:0)

最后我发现我需要更改本地Windows用户组成员资格。

sql server agent作业使用代理运行,代理使用凭证,该凭证引用Windows帐户。

在我们的例子中,STG windows帐户是管理员的一部分,但在PRD上它只在用户中(这就是为什么架构比较在SQL级别上没有显示差异 - 这是Windows操作系统问题)。

尽管错误是指oledb驱动程序,并且我们已经访问了所有TMP / TEMP和文件位置,我们需要更改计算机管理中的用户访问权限以解决问题。

我们花了3天的时间来解决这个问题所以希望这可以帮助那些人!