【问题标题】:Microsoft JET Database Engine error: "file in use"Microsoft JET 数据库引擎错误:“文件正在使用”
【发布时间】:2016-10-06 07:29:02
【问题描述】:

我在 Classic ASP 中使用数据库时遇到了这种奇怪的行为。

我在公共位置有一个数据库:/database/database.mdb(www 可浏览位置)。 这被转换为以下物理:c:\Domains\mysite.com\database\database.mdb

我决定更改数据库位置并将其放在以下非公共位置,以增加安全性:c:\Domains\Contents\database.mdb

所有的 ASP 脚本都可以访问这个位置并且它有足够的权限。

有些脚本可以处理同时打开和关闭的多个记录集,例如,在以下流程中:

|-database is opened
| |---recorset1 is opened
| | 
| | |----recorset2 is opened
| | | 
| | |----recorset2 is closed
| | 
| | |-recorset3 is opened
| | |
| |---recorset1 is closed
|   |
|   |-recorset3 is closed
|
|-database is closed

问题是这样的:当我在公共位置 (c:\Domains\mysite.com\database\database.mdb) 使用数据库时 - 上面描述的使用记录集的工作效果很好。但是当我在这个非公共位置 (c:\Domains\Contents\database.mdb) 使用数据库时,我得到以下信息 错误:

Microsoft JET 数据库引擎错误“80004005”
无法使用'';文件已在使用中。

我有两个问题:

  1. 这怎么可能? IIS 是否将公共 http 文件与“本地”文件不同?我该如何解决这个问题?
  2. 这真的增加了安全性吗?真的有效吗?

【问题讨论】:

  • I had a database in a public location: /database/database.mdb (www browsable location). 这是一场灾难。安全问题。
  • But when I use the database in this non public location (c:\Domains\Contents\database.mdb) I get the following error: 您的 IUSR 用户是否拥有对该数据库的读/写权限?
  • 为什么在 2016 年人们仍在尝试使用 Access 数据库进行 Web 开发?省去很多麻烦并切换到SQL Server Express,它免费、高效、可扩展。
  • 复杂?我在本地运行 SQL Server Express,一旦我准备好真正的服务器环境,detech,将 mdf 和 ldf 文件复制到服务器,附加并离开。你可能不那么复杂,但 Access 从来没有被设计为在多用户环境中工作(例如点工作组文件......yuk!)所以你实际上给自己更多的悲伤然后在真正的多用户环境中工作-用户关系数据库。
  • 也许这是一个愚蠢的问题,但是当您尝试在您的网站中查看数据时,您是否在 Access 桌面应用程序中打开了您的数据库?

标签: ms-access iis asp-classic database-connection vps


【解决方案1】:

“你可能有权限打开数据库,但是尝试访问数据库的帐户是否有权限?很可能不是登录用户,而是匿名用户”

我们如何检查尝试访问数据库的帐户是否有权限?

参考https://forums.iis.net/t/1147247.aspx?Microsoft+JET+Database+Engine+error+80004005+

更多详情

【讨论】:

  • 谢谢。那确实是权限问题。
【解决方案2】:

尝试同时打开多个记录集时出现以下错误的原因:

Microsoft JET 数据库引擎错误“80004005”

无法使用'';文件已在使用中。

对数据库目录的权限不足。

在 plesk 中,我将这些权限添加到包含数据库的目录 (c:\Domains\Contents)

这解决了问题。

这与 IIS 在包含数据库的目录中创建新文件 (database.ldb) 的能力有关。 .LDB 文件是 Microsoft Access Lock 信息文件,在用户打开/访问 Access 数据库时创建,其中包含有关哪些用户当前正在访问该文件的信息。 .ldb 文件在 Microsoft Jet 数据库引擎 3.0 和 3.5 版的多用户方案中发挥着重要作用,因为它用于确定哪些记录被锁定在共享数据库中以及由谁锁定。

更多信息在这里:Introduction to .ldb Files

....mdb 文件应位于用户已阅读的文件夹中, 写入、创建和删除(或完全控制)权限。

【讨论】:

  • 那么,首先向您提出的建议,真的不足为奇。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多