ACCESS数据库锁定问题
问题1
单位网站突然有的时候不能打开网页。重启电脑后问题解决。说是CONN.ASP第6行错误。同时生成一个.LDB文件。在网上查了下说是数据库没有关闭或锁定了。请问如何关闭啊,下边是CONN.ASP代码:
<%
starttime=timer()
StrSQL="DBQ="+server.mappath("admin/data/news30000.mdb")+";DRIVER={Microsoft Access Driver (*.mdb)};"
'connstr="driver={SQL Server};server=(local);database=master;uid=sa;pwd=;"
set ateobject("ADODB.CONNECTION")
conn.open StrSQL(第6行)
%>
答:
如果是ACCESS数据库,应该是并发访问造成的问题。因为ACCESS没有行锁。所以你有个一个用户在网上改一条数据,另外一个用户再上来访问相同一条数据时就给锁了。重启动后所有的连接全断开了,所以就没问题了。如果有可能最好不用ACCESS做后台数据库
赞同
----------------------------------
问题2
我的数据库老是被锁住,网页打不开,请高手帮忙!!我的conn.asp是:<%
scadb=mydata&"datahotel/#@@##feel.mdb"  'mydata 为各文件中设置的路径,请不要改动
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&scadb&"")
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.open connstr
If Err Then
  err.Clear
  Set Conn = Nothing
  Response.Write "<div align='center'><p><br><br><br><font color='red' site='3pt'>数据库连接出错请检查数据库连接指向^--^</font></p></div>"
  Response.End
End If%>
答:
你的数据库连接写法是正确的,是不是数据库太大,几百M的话容易出现这个问题,建议换sql数据库。不想换的话可以把数据库下载到本地压缩修复一下再传上去。
-------------------------
问题3
怎么在asp中判断access数据库已经被锁定
用asp作为前端,数据库是.mdb和.xls文件(在不同的页面中,两个数据库不是一起用的)。有时候需要打开数据库文件,此时数据库会被锁定(即是产生.ldb文件的情况),提示“Microsoft JET Database Engine error '80004005' ...已经被另一个用户独占”。我想redirect到一个统一的维护页面,应该用什么语句判断表被独占了呢?谢谢!
问题补充:
但是我要在哪里加上跳转语句呢?我就是不想让别人看到“Microsoft JET Database Engine error '80004005' ...”的提示...请说一下怎么跳转好吗?小弟初学
答:
我知道用判断语句,其实我想问的是应该用什么语句...不过问题解决了,判断err就行啦,呵呵
-----------------------
问题4
ACCESS多个人使用数据库锁定,怎么解锁
答:
网友你好,如果一个数据库多个人使用的话,那么就需要它具有网络功能。可是Access是一个垃圾数据库,只适合单机使用。如果你想使用网络网络库,就用SQL Server 2000挺好的呀,可以在微软XP 系统上安装开发版本的。
如果你的问题是想问当软件客户端在连接Access的时候,会出现游标问题,那么就选择游戏类型呗,我这边有的,查询,删除,更新等等。
---------------------
问题5
Access数据库连接关闭与.ldb文件锁定解决方法
答:
这几天一直被ASP调用数据库引起CPU使用率高达100%的问题困扰,刚刚终于把问题解决了,可以睡个好觉了!
  常用的数据库连接方式:
  Dim connstr
  dim dbpath
  dbpath="#123$asd31.mdb"
  connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbpath)
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open connstr
  关闭语句不仅是.
  (断开记录)
  Rs.close
  Set Rs=Nothing
  还有:(断开连接)
  Conn.Close
  Set Conn=Nothing
  排除上面的原因之后.
  用ACCESS打开你的数据库,选择菜单中的[工具]->[选项]->[高级]
  更改[默认打开模式]为[共享],更改[默认记录锁定]为[不锁定].
  如仍然不行将下面的选项[使用记录级锁定]也取消.
  确定后保存,然后打开,修复/压缩数据库.
  删除目录中的LDB文件(如无法删除,先结束相关进程或重新启动计算机删除即可)
  有时候检查一下是否有页面同时争用资源的情况,我的问题就是属于这个情况造成的!欢迎大家光临指导我们的网站:(济宁网站建设专家-易远网络)www.05371
问题6
access数据库用什么软件关于“锁”的问题
尽管access不是一个大型的数据库,但也要考虑多用户使用时的并发性及有可能产生的错误,如“读脏数据”、“不可重复读”、“修改丢失”等,所以并发控制也是很重要的。我们知道,“锁”是解决并发出错问题的主要方法,“锁”有主要有两种:排它锁“x”与共享锁“s”,在access环境中,怎样应用这两“锁”呢?
没有人能指教吗?请大家展开讨论。好似ACCESS只有共享锁,而没有排它锁,即使有用户正在编辑某一数据,别的用户照样可以读这个数据,这样就有可能产生一些并发错误,如“不可重复读”等,怎样锁定正在编辑的数据,使数据没有修改结束之前,数据不可读呢?
独占就不能供多用户使用了,我们要探索种在多用户环境下的解决方法。
上面的朋友的回答都没有能解决问题。对于并发的数据库而言,排它锁是必须的。举个例子说,如有一货物销售系统,现在某种货物库存还有100箱,此时甲进行操作,拟售出货物60箱,系统查出货物还有100箱,售出操作允许执行;就在甲正进行售出操作的几乎同一时刻(甲已经键入售出60箱,但有些其他信息正在键入或信息正在通信线路上传输,售出记录还没有真正保存到数据库),乙也拟售出这种货物60箱,因为甲的操作还没有结束,记录还没有保存,所以当前库存还是100箱,所以系统也允许乙售出这种货物60箱。当两人的操作都完成了之后,实际共售出了货物120箱,但库存根本就没有这么多货,并发操作引起了错误。为了备免这样的情况发生,就要用到“排它锁S”,当某一操作员拟售出某种货物的时候,必须获得这种货物的“排它锁”,锁定这种货物,使其他用户不能编辑相关的数据,也不能读取相关的数据。如上例,甲拟售出某货物60箱,就将这种货物锁定,在甲没有操作完成期间,
乙也拟售出货物60箱,因甲已锁定数据,乙没法读取数据,只能等待甲释放“锁”。甲操作完成之后,释放了“锁”,乙获得控制权可以读取数据,但这时库存量已经是40箱了,少于60箱,乙只能以不大于40箱的数量售出这种货物,这就解了并发出错的问题。“排它锁”在大型数据库中都是有的,但在ACCESS中不知有没有,不知该怎样用法?如果ACCESS本身没有这种锁,我们该怎样用VB来实现这种“锁”? 请大家展开讨论,指点迷津。
答:
多用户,使用事务是非常好的.但要一定的代码来实现哟.另外,窗体还有锁定方式可以选择.