1

我正在尝试建立一个链接服务器,SQL Server 2008 R2Access database. Access database不受密码保护。正如我在其他帖子(特别是这篇文章)中看到的那样,这通常是由于当前用户无法访问 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 的数据连接组件),但它们都不起作用。我还尝试将 ACE 提供程序配置"Dynamic Parameter""Allow InProcess"true。

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

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

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

4

2 回答 2

1

我通过在控制面板中禁用 UAC 解决了这个问题。我不确定这做了什么改变,但它可能对其他人有所帮助!

于 2013-03-18T15:37:05.953 回答
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])
于 2014-09-21T17:26:22.743 回答