经典 asp - ms 访问更新问题(Microsoft Jet 数据库引擎停止)

Posted

技术标签:

【中文标题】经典 asp - ms 访问更新问题(Microsoft Jet 数据库引擎停止)【英文标题】:classic asp - ms access update problem (The Microsoft Jet database engine stopped) 【发布时间】:2019-06-20 18:46:18 【问题描述】:

单用户没问题,但同时测试多用户时出现以下错误。

错误 1: Microsoft Jet 数据库引擎停止了该进程,因为您或其他用户试图同时更改相同的数据。

错误 2: 无法更新;目前已锁定。

Set data = Server.CreateObject("ADODB.Connection") 
data.connectionstring = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="&Server.MapPath("db/db.mdb")
data.open 

set rs = server.CreateObject("adodb.recordset")
rs.open "select * from users where id="&user_id,data,1,3

rs("ip") = ip
rs.update

rs.close : set rs = NOthing : data.close : set data= NOthing

【问题讨论】:

嗯,Microsoft 在任何地方都非常明确,您应该将 Access 用作网站或服务的数据库。如果这样做,肯定会出现锁定冲突和并发问题。 更新应该只需要一瞬间,所以看起来连接没有关闭,即使您尝试关闭。为什么,我不能说。 您是否在 Access 桌面程序中打开了您的 jet 数据库?如果您这样做,肯定会为其他用户“锁定”它 - 即您的网站。如果您在提取所需数据并完成此操作后关闭记录集和连接,则 jet 数据库可以作为低流量网站的后端。 【参考方案1】:

你试过了吗:

dim bensql
bensql="select * from users where id="&user_id
rs.Open bensql, data,3,3
if not rs.eof then
    rs("ip") = ip
    rs.update
end if
rs.close

可能是因为另一个用户试图同时更改相同的数据,查询无法确定 rs.eof 与否

【讨论】:

以上是关于经典 asp - ms 访问更新问题(Microsoft Jet 数据库引擎停止)的主要内容,如果未能解决你的问题,请参考以下文章

从经典 ASP 连接到 MS Access 数据库

Windows Server 2003 中使用经典 ASP 的 MS Access 数据库

需要用经典 ASP (VB) 替换 Server 2012 上的 MS 索引服务

更新 Excel 工作表(在经典 ASP/Vbscript 中)

ASP.NET - VB.NET - 更新 MS_Access 表

访问和经典 ASP 错误 80004005 超出系统资源