Asp.net 尝试使用Access远程表运行查询时出错

Asp.net 尝试使用Access远程表运行查询时出错,asp.net,ms-access,iis,odbc,Asp.net,Ms Access,Iis,Odbc,我有一个带有本地和远程表的Access数据库。远程表通过ODBC连接链接到Sql Server数据库 当我打开Access数据库时,我可以打开并查看本地表和远程表的内容。因此,这证明从ASP.NET应用程序连接到远程表应该没有问题 现在,当我在Visual Studio中运行ASP.NET应用程序时,我可以毫无问题地访问access中的本地表和远程表 一旦我将我的应用程序放入IIS并从localhost运行该应用程序,我就只能使用代码访问access文件中的本地表,而不能访问任何远程表!我在尝试

我有一个带有本地和远程表的Access数据库。远程表通过ODBC连接链接到Sql Server数据库

当我打开Access数据库时,我可以打开并查看本地表和远程表的内容。因此,这证明从ASP.NET应用程序连接到远程表应该没有问题

现在,当我在Visual Studio中运行ASP.NET应用程序时,我可以毫无问题地访问access中的本地表和远程表

一旦我将我的应用程序放入IIS并从localhost运行该应用程序,我就只能使用代码访问access文件中的本地表,而不能访问任何远程表!我在尝试时遇到以下错误:“ODBC——连接到'FMPOS_live'失败。”但请记住,直接从Access打开远程表没有问题,但由于某些原因,我无法从IIS中运行的应用程序访问它们


是否存在某个权限,该权限取决于访问访问文件的人员或内容,决定该进程是否可以使用远程表???

从Visual Studio运行时,您正在使用自己的凭据连接到SQL server

从IIS运行时,您使用的是ApplicationPoolIdentity、网络服务或本地系统,具体取决于应用程序池的配置。你将需要允许登录和阅读特权的任何帐户下的网站运行

在从VS运行的情况下,它可能会工作,因为您可能是SQL server上的系统管理员

尝试在任务管理器中检查正在运行“w3wp.exe”的用户


对于ApplicationPoolIdentity,您要查找的用户名将是IIS APPPOOL\NameOfApplicationPool。

问题在于应用程序池标识。Access不允许通过默认进程ApplicationPoolIdentity访问其远程表。我将身份更改为我的windows用户登录,它成功了

说明: 1.转到网站的应用程序池 2.单击它并选择高级设置
3.在Process Model Identity下,选择Custom Account并键入windows登录的用户名和密码

我给了用户“Everyone”,对access数据库的完全访问权限,我的web应用程序仍然无法访问access数据库远程表。同样,访问本地表也没有问题。如果这是Sql Server的问题,Sql Server如何知道哪个进程正在使用Access数据库提供对其表的访问??我在一个完全不同的web服务器上设置了这种情况,使用一个不同的Access数据库,其中包含到另一个Sql server数据库的远程表,同样的情况也会发生,所以这似乎不是一个仅限于一台计算机的模糊问题。还有什么想法吗?这些表是通过Access数据库链接的?伙计,这听起来很复杂!不管怎样,我认为打开access数据库的IIS进程仍然是打开SQL连接的进程,因此需要权限。我现在意识到我的答案不清楚,您需要将权限添加到SQL server数据库,而不是access数据库。但我正在使用SQL server身份验证,使用ODBC中的用户名和密码连接到SQL server,而不是windows authenticaton。这是一件非常容易复制的事情。如果你能找到解决办法,我真的会欣喜若狂,因为我花了好几个小时在这上面。1.使用一个表创建Sql Server数据库。2.创建到此数据库的ODBC连接。3.使用本地表创建Access数据库。4.使用到Sql Server的ODBC连接在此Access数据库中创建远程表。现在在ASP.NET中,尝试访问access中的每个表。您可以读取本地表,但不能读取远程表。当我在studio中查看web应用程序时,可以在studio中查看远程表,连接字符串必须是Provider=Microsoft.Jet.OLEDB.4.0;数据源=C:\FMPOS\DataBase\Local\FMPOS\u Main.mdb当我发布它时,它必须是Provider=Microsoft.Jet.OLEDB.12.0;数据源=C:\FMPOS\DataBase\Local\FMPOS\u Main.mdb可能第二个连接字符串不允许远程查看表?