我们遇到了问题,我认为这个问题应该很容易解决,但不确定如何解决。 我们有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以独占模式打开数据库。
任何人都有任何想法如何解决这个问题?
由于
答案 0 :(得分:6)
确定。问题得到了解决。正如我在问题中所说的那样 - 决议非常简单。不是仅对MDB文件设置IUSR_ *写入权限,而是必须将写入权限设置为存储MDB文件的整个文件夹。奇怪,因为我没有看到任何创建的附加文件(意思是,像.ldb文件,它是在独占数据库打开期间创建的)。但是,它现在有效!
答案 1 :(得分:1)
据我记得在我的第一个经典ASP时代使用Access时,你不能在指向相同的物理.mdb
文件的同时打开多个连接,因为一旦它被打开,它就被锁定了。这就是我学到的难点。
我的解决方案是使用一个连接。有一个非常小的网站需要管理,我只使用了应用程序级别的连接对象,在global.asa
中创建并打开一次,然后在所有页面中使用。
然而这对于普通网站来说并不好,所以你可以在那里编写名为“database.asp”的文件创建并打开连接,然后包含该文件并使用代码中的连接对象,不要忘记在每个页面的末尾关闭它
希望这是有道理的,如果需要,我会澄清。