【问题标题】:Error when trying to run query using Access remote table尝试使用 Access 远程表运行查询时出错
【发布时间】:2013-08-22 21:31:11
【问题描述】:

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

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

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

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

是否有某个地方的权限取决于访问 Access 文件的人员或内容来确定该进程是否可以使用远程表?

【问题讨论】:

    标签: asp.net ms-access iis odbc


    【解决方案1】:

    从 Visual Studio 运行时,您使用自己的凭据连接到 SQL 服务器。

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

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

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

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

    【讨论】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      相关资源
      最近更新 更多