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

时间:2013-06-08 01:51:45

标签: asp.net iis-7 sql-server-2008-r2

我创建了一个.NET网站,它使用带有链接服务器的SQL Server 2008 R2到Access数据库(.mdb)。链接服务器工作,我可以浏览到.mdb表并查询SQL Server中的表。使用Visual Studio运行网站时,可以毫无问题地访问所有表。当使用IIS运行网站时,我在尝试从Access数据库中选择记录时收到错误。 SQL服务器表很好。错误是“无法初始化OLE DB提供程序的数据源对象”Microsoft.ACE.OLEDB.12.0“链接服务器”[链接服务器的名称]“。 (这也是数据库的名称。)

以下是详细信息:

  • Windows Server 2008 Enterprise 64位
  • SQL Server 2008 R2 64位
  • IIS7
  • 访问数据库具有“Access 2000文件格式”(见于 该文件在Access 2010中打开)
  • Office未安装在服务器上(包括Access)
  • 使用IUSR帐户使用匿名身份验证设置IIS。
  • IUSR帐户已完全控制目录所在位置 .mdb数据库驻留。
  • 视图是从Access表创建的,网站访问 观点
  • 这是连接字符串:

    添加name =“ApplicationServices” connectionString =“data source = [server]; 综合安全= SSPI; 初始目录= [SQL server db];“ 的providerName = “System.Data.SqlClient的”

在SQL Server中,这是用于设置链接服务器的代码

EXEC sp_addlinkedserver 
   @server = N'LinkedServer', 
   @provider = N'Microsoft.ACE.OLEDB.12.0', 
   @srvproduct = N'OLE DB Provider for ACE',
   @datasrc = N'C:\RTS_NEW\RTS\App_Data\Data\AccessDatase.mdb';
GO

在链接服务器下 - >提供者,Microsoft.ACE.OLEDB.12.0提供程序已在“属性”

下启用了以下项
  • 动态参数
  • 允许进程
  • 禁止访问

这很有趣。当我通过Visual Studio运行网站并且它访问SQL Server数据库(没有访问Access数据库)时,会在与.mdb文件相同的目录中创建.ldb文件。当我浏览到IIS中的同一页面时,不会创建.lbl。当我转到访问Access数据库的页面时,不会创建ldb文件。 IIS是否可以将文件放在没有为IUSR设置权限的其他目录中?我在哪里可以找到该目录?

我重启了SQL Server(MSSQLSERVER)但没有效果。

谁能看到我在俯瞰的东西?或者让我知道下一步该去哪儿?任何帮助表示赞赏!


解决方案

使用ProcMon,我能够确定哪些目录需要设置权限。

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

我发现将AppPool帐户添加到文件夹的“组或用户名”,以使其权限有点棘手。这是一个很好的解释:

IIS7 Permissions Overview - ApplicationPoolIdentity

0 个答案:

没有答案