不能使用'(未知)';文件已在使用中

时间:2011-07-27 16:09:45

标签: ms-access asp-classic

我们遇到了问题,我认为这个问题应该很容易解决,但不确定如何解决。 我们有Windows 2003 Server和Classic ASP应用程序。 MSAccess数据库用于数据存储。

应用程序的设计方式包含很多内容。

.asp页面可能会打开数据库连接并在页面末尾将其关闭。与此同时,页面上包含的include也可以打开相同的数据库。

问题是在第二次打开时我们收到错误:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Could not use '(unknown)'; file already in use

这仅限于我们的本地配置 - 我们不拥有该项目,但正在帮助客户修复某些项目。在客户方面,一切都很完美。 当我们设置对数据库的只读访问时,不会显示此错误。 因此,似乎ADODB.Connection以独占模式打开数据库。

任何人都有任何想法如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:6)

确定。问题得到了解决。正如我在问题中所说的那样 - 决议非常简单。不是仅对MDB文件设置IUSR_ *写入权限,而是必须将写入权限设置为存储MDB文件的整个文件夹。奇怪,因为我没有看到任何创建的附加文件(意思是,像.ldb文件,它是在独占数据库打开期间创建的)。但是,它现在有效!

答案 1 :(得分:1)

据我记得在我的第一个经典ASP时代使用Access时,你不能在指向相同的物理.mdb文件的同时打开多个连接,因为一旦它被打开,它就被锁定了。这就是我学到的难点。

我的解决方案是使用一个连接。有一个非常小的网站需要管理,我只使用了应用程序级别的连接对象,在global.asa中创建并打开一次,然后在所有页面中使用。
然而这对于普通网站来说并不好,所以你可以在那里编写名为“database.asp”的文件创建并打开连接,然后包含该文件并使用代码中的连接对象,不要忘记在每个页面的末尾关闭它

希望这是有道理的,如果需要,我会澄清。