Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无法初始化OLE DB provider的数据源对象;Microsoft.ACE.OLEDB.12.0“;“用于链接服务器”;(无效)“;(在存储过程/包/作业中使用)_Sql Server_Oledb - Fatal编程技术网

Sql server 无法初始化OLE DB provider的数据源对象;Microsoft.ACE.OLEDB.12.0“;“用于链接服务器”;(无效)“;(在存储过程/包/作业中使用)

Sql server 无法初始化OLE DB provider的数据源对象;Microsoft.ACE.OLEDB.12.0“;“用于链接服务器”;(无效)“;(在存储过程/包/作业中使用),sql-server,oledb,Sql Server,Oledb,我在尝试运行使用OpenRowSet使用OLEDB从Excel文件提取数据的SSIS包时收到此消息 我尝试了StackOverflow上提到的许多不同的解决方案,包括: 重新安装OLEDB驱动程序 检查临时文件夹的访问权限(我将临时文件夹系统变量更改为一个特定的文件夹,而不是通过用户名进行动态更改+授予每个人对该文件夹的访问权限) 在查询窗口中检查OpenRowSet查询的执行情况/执行使用它的存储过程/执行引用存储过程的包/执行引用上述包的作业-在我的情况下,我可以让查询作为查询直接运行,我

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

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

  • 重新安装OLEDB驱动程序

  • 检查临时文件夹的访问权限(我将临时文件夹系统变量更改为一个特定的文件夹,而不是通过用户名进行动态更改+授予每个人对该文件夹的访问权限)

  • 在查询窗口中检查OpenRowSet查询的执行情况/执行使用它的存储过程/执行引用存储过程的包/执行引用上述包的作业-在我的情况下,我可以让查询作为查询直接运行,我仅以管理员身份打开SSMS

我可以在我们的珠江三角洲环境(我们还没有启动,所以珠江三角洲实际上是一个测试环境)中重新说明这个问题,但在我们的STG环境中却没有。我做了一个模式比较,以确保代码库在不同环境中是相同的

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


下面是帮助我的答案(我在网上找不到任何地方…)最后我发现我需要更改本地windows用户组成员身份

sql server代理作业使用代理运行,代理使用引用windows帐户的凭据

在我们的例子中,STG windows帐户是Administrator的一部分,但在PRD上它只在用户中存在(这就是为什么模式比较在SQL级别没有显示任何差异-这是windows操作系统的问题)

尽管错误涉及oledb驱动程序,并且我们已授予对TMP/TEMP和文件位置的所有访问权限,但我们需要在计算机管理中更改用户访问权限以修复此问题

我们两个人花了三天时间来解决这个问题,希望这能帮助其他人