我正在尝试建立从SQL Server 2008 R2
到Access 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帐户(内置)可以访问该文件夹。如果有人能指出我在这里正确的方向,那将是伟大的,我认为它也会帮助很多其他人。
答案 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])