Windows Server / IIS 10 / ODBC 问题

问题描述 投票:0回答:1

我们的内联网(Windows Server 2019 / IIS 10)使用简单的访问数据库。在 global.asa 中,我们按原样连接到该数据库:

"strconn = "DRIVER={Microsoft Access 驱动程序 (*.mdb, *.accdb)};DBQ=C:\inetpub\intranet\data.mdb" 设置 conn = Server.CreateObject("ADODB.Connection") conn.open strconn"

Windows 身份验证已启用

当我使用管理员帐户连接到内网时,它工作正常,当我使用用户帐户连接到内网时,身份验证窗口打开;它失败,直到我使用管理员帐户登录

奇怪的行为:如果我在 Intranet 上使用管理员帐户导航一次,所有其他用户都可以在 Intranet 上导航(无论来自哪台计算机)!!!!

导致此问题的行是“conn.open strconn”

我检查了数据库文件权限,ACEODBC.DLL权限,尝试使用ODBC系统数据源,检查processmonitor是否可以看到访问被拒绝,卸载/安装访问数据库引擎...

想法:看起来管理员创建了一个文件,用户可以修改这个文件,这样就可以解释情况了;因此,我检查了 c: emp 、 c:\windows emp 上的用户权限,因为 JETxxx.tmp 文件被创建一次,并一直保留到发生空闲超时,这看起来像是我的问题。

我的解决方法是将 IDLE 超时设置为零,并使用管理员帐户打开 Intranet 一次...这仅在我们不重新启动服务器或 IIS 的情况下才有效,我们必须修复此问题。

我不知道如何检查哪一层失败了?

我现在很绝望......它应该这么简单......

谢谢你

ms-access iis odbc
1个回答
0
投票

这表明Web服务器没有在mdb所在的文件夹中创建文件的权限。

对于访问更新数据,mdb(或较新的 accDB)eixst 所在的文件夹将需要完整的读/写权限,以及 ALSO 文件创建权限。如果用户(或 Web 服务器)打开该文件,并且无法创建所谓的锁定“.ldb”文件,则数据库将以只读方式打开。这就解释了为什么谁先打开会影响站点的行为(由于包含 mdb 文件的文件夹的权限有限,站点无法创建锁定文件)。

这表明该网站很可能需要使用所谓的“模拟”。这意味着您可以考虑为网站设置一个用户,该用户已被授予 mdb 所在文件夹的权限。

(并且您没有提及 mdb 文件是否与 Web 服务器位于同一服务器上)。

当然,服务器很可能不属于公司域。

那么,通常不是向所有人开放文件夹权限吗? 可以在 Web 服务器上创建一个用户,该用户仅被授予对该文件夹的特定权限(您不希望 Web 服务器能够搞乱网络上的所有文件夹和计算机 - 太危险了)。

因此,可以在服务器上创建一个用户,并授予该文件夹的权限。然后,您可以在应用程序池“高级”设置中使用新创建的用户:

例如这里:

你的问题并不是真正的编码问题,因此也不是真正有效的SO问题。

© www.soinside.com 2019 - 2024. All rights reserved.