1

我有一个我支持的旧版 ASP 应用程序。通过支持,我的意思是自 2005 年左右以来我没有碰过它,因为它刚刚起作用。

但是,在 ASP 应用程序使用的 Access 数据库中存在一些数据问题。所以像个傻瓜一样,我直接通过文件共享打开数据库(使用 MS Access 2007),修复数据并将其保存下来(以 Access 2000 格式)。

现在应用程序将检索并显示数据 OK,但任何更新都失败并出现错误3705: Operation is not allowed when the object is open。我没有以任何方式更改代码,唯一的更改是数据更新和数据库保存。

我发现了很多这个错误的例子,但它们都与相当简单的问题有关,比如确保在打开记录集之前关闭它、更改 CursorLocation 枚举等。我徒劳地尝试了其中的大部分,希望有些事情会工作,但什么都没有。

有什么想法可以解决这个问题吗?

谢谢。

更新

我已经安装了一个基于 Web 的访问数据库管理系统,并尝试压缩和修复数据库。我收到错误:

The Microsoft Jet database engine cannot open the file '<snip>'. It is
already opened exclusively by another user, or you need permission to view
its data. (-2147217911)

我已经运行了此处详述的宏以确定谁登录到数据库,并且只显示了管理员用户(这是我 - 在运行它时)

4

2 回答 2

0

@Remou 上面关于检查文件和文件夹权限的评论是正确的。

我让我们的服务器管理员检查了权限,似乎写权限已经从文件夹中删除(并且文件也从文件夹继承了它们的权限)。他说,以前直接通过文件共享保存时发生过这种情况。

(接受代替@Remou的回答)

于 2012-11-14T04:18:19.580 回答
0

这些错误意味着一件事:数据库文件被其他进程打开,因此被锁定。

“基于 Web 的访问数据库管理系统”很可能是罪魁祸首,尝试找出如何将其配置为不锁定文件或摆脱它。

作为一种变通方法或验证真正问题的方法,您可以将 .mdb 文件复制到不同的位置并更改经典的 ASP 连接字符串,以检查您是否可以在新位置更新数据库。

于 2012-11-04T08:40:37.157 回答