我有一个包含本地和远程表的Access数据库。远程表通过ODBC连接链接到Sql Server数据库。
当我打开Access数据库时,我可以打开并查看本地和远程表的内容。因此,这证明从ASP.NET应用程序连接到远程表应该没有问题
现在,当我在Visual Studio中运行ASP.NET应用程序时,我可以在Access中访问本地和远程表,没有任何问题。
只要我将我的应用程序放入IIS并从localhost运行应用程序,我只能使用我的代码访问Access文件中的本地表,但没有远程表!我尝试时收到以下错误:“ODBC - 连接到'FMPOS_live'失败。”但请记住,我没有问题直接从Access打开远程表,但我无法从我在IIS中运行的应用程序访问它们。
是否有权限取决于访问Access文件的人员或内容,确定该进程是否可以使用远程表?
答案 0 :(得分:1)
从Visual Studio运行时,您使用自己的凭据连接到SQL服务器。
从IIS运行时,您使用ApplicationPoolIdentity,网络服务或本地系统,具体取决于应用程序池的配置。您需要允许登录和读取权限到网站运行的任何帐户。
在从VS运行的情况下,它可能正常工作,因为您可能是SQL服务器上的系统管理员。
尝试在任务管理器中检查用户正在运行“w3wp.exe”。
对于ApplicationPoolIdentity,您要查找的用户名是IIS APPPOOL \ NameOfApplicationPool。
答案 1 :(得分:0)
问题是应用程序池标识。 Access不允许通过默认进程ApplicationPoolIdentity Identity访问它的远程表。我将身份更改为我的Windows用户登录,并且有效!
说明: 1.转到您网站的应用程序池 2.单击它,然后选择“高级设置” 3.在Process Model Identity下,选择Custom Account并输入您的Windows登录用户名和密码。