我创建了一个.NET网站,它使用带有链接服务器的SQL Server 2008 R2到Access数据库(.mdb)。链接服务器工作,我可以浏览到.mdb表并查询SQL Server中的表。使用Visual Studio运行网站时,可以毫无问题地访问所有表。当使用IIS运行网站时,我在尝试从Access数据库中选择记录时收到错误。 SQL服务器表很好。错误是“无法初始化OLE DB提供程序的数据源对象”Microsoft.ACE.OLEDB.12.0“链接服务器”[链接服务器的名称]“。 (这也是数据库的名称。)
以下是详细信息:
这是连接字符串:
添加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帐户添加到文件夹的“组或用户名”,以使其权限有点棘手。这是一个很好的解释: