无法为链接服务器初始化OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象

时间:2013-03-15 20:37:54

标签: sql sql-server sql-server-2008 linked-server

我正在尝试建立从SQL Server 2008 R2Access database的链接服务器。 Access database未受密码保护。正如我在其他帖子(specifically this one)中看到的,这通常是由于当前用户无法访问NetworkService文件夹中的Temp文件夹。由于我们在Windows Server 2008中运行它,因此目录结构与大多数目的结构完全不同。我已经允许访问"root:\Documents and Settings\" directory中的每个临时文件夹,但无济于事。

这是我用来添加链接服务器的过程:

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 and JET(64-bit)(通过安装Office的数据连接组件),但它们都不起作用。我还尝试将"Dynamic Parameter""Allow InProcess"的ACE提供程序配置为true。

此外,我尝试通过在SQL配置管理器中的MSSQLSERVER services字符串前添加"-g512;“来增加"startup parameters"的内存使用量,以排除内存问题。

如果有人能够对此有所了解,那就太棒了!谢谢!

更新:我使用sa帐户登录SQL,我能够查看链接服务器。我当前的用户帐户在SQL Server中具有完全权限,因此我不确定帐户之间的区别。也许我授予了错误的Temp文件夹的权限,其中sa帐户(内置)可以访问该文件夹。如果有人能指出我在这里正确的方向,那将是伟大的,我认为它也会帮助很多其他人。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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])