Sql 无法初始化OLE DB provider的数据源对象;Microsoft.ACE.OLEDB.12.0“;用于链接服务器

Sql 无法初始化OLE DB provider的数据源对象;Microsoft.ACE.OLEDB.12.0“;用于链接服务器,sql,sql-server,sql-server-2008,linked-server,Sql,Sql Server,Sql Server 2008,Linked Server,我正在尝试建立从SQL server 2008 R2到Access数据库的链接服务器。Access数据库没有密码保护。正如我在其他文章()中看到的,这通常是由于当前用户无法访问NetworkService文件夹中的临时文件夹。由于我们是在Windows Server 2008中运行此功能的,因此目录结构与大多数人所回避的目录结构大不相同。我已允许访问“root:\Documents and Settings\”目录中的每个临时文件夹,但没有用 以下是我用于添加链接服务器的过程: EXEC sp_

我正在尝试建立从
SQL server 2008 R2
Access数据库的链接服务器。
Access数据库
没有密码保护。正如我在其他文章()中看到的,这通常是由于当前用户无法访问NetworkService文件夹中的临时文件夹。由于我们是在Windows Server 2008中运行此功能的,因此目录结构与大多数人所回避的目录结构大不相同。我已允许访问
“root:\Documents and Settings\”目录中的每个临时文件夹,但没有用

以下是我用于添加链接服务器的过程:

EXEC sp_addlinkedserver 
@server = N'OS_Access', 
@provider = N'Microsoft.ACE.OLEDB.12.0', 
@srvproduct = N'',
@datasrc = N'C:\RTBData\Data\OS.mdb';
GO
它创建链接服务器没有问题,但我无法查看数据库的表/视图。同样,我的ASP.NET应用程序也无法访问它

我尝试了ACE和JET(64位)
(通过安装Office的数据连接组件),但它们都不起作用。我还尝试将ACE提供程序的
“动态参数”
“允许InProcess”
配置为true

此外,我还尝试通过在SQL configuration manager中的
“启动参数”
字符串前面添加
“-g512;
”来提高
MSSQLSERVER服务的内存使用率,以排除内存问题

如果有人能解释一下,那就太棒了!谢谢


更新:我使用sa帐户登录SQL,并且能够查看链接的服务器。我的当前用户帐户在SQL server中具有完全权限,因此我不确定这两个帐户之间的区别。可能我给了错误的
Temp
文件夹权限,sa帐户(内置)可以访问该文件夹。如果有人能给我指出正确的方向,那就太好了,我想这也会帮助很多其他人。

我通过在控制面板中禁用UAC解决了这个问题。我不确定这会带来什么变化,但它可能会帮助其他人

USE [master]
GO
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
USE [master]
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Name & Location of DB';;, [TableName])