2024年5月10日发(作者:)

ACCESS数据库锁定问题

问题1

单位网站突然有的时候不能打开网页。重启电脑后问题解决。说是第6行错误。同

时生成一个.LDB文件。在网上查了下说是数据库没有关闭或锁定了。请问如何关闭啊,下边是

代码:

<%

starttime=timer()

StrSQL="DBQ="+h("admin/data/")+";DRIVER={Microsoft

Access Driver (*.mdb)};"

'connstr="driver={SQL Server};server=(local);database=master;uid=sa;pwd=;"

set conn=object("TION")

StrSQL(第6行)

%>

答:

如果是ACCESS数据库,应该是并发访问造成的问题。因为ACCESS没有行锁。所以你有个一个

用户在网上改一条数据,另外一个用户再上来访问相同一条数据时就给锁了。重启动后所有的连接全

断开了,所以就没问题了。如果有可能最好不用ACCESS做后台数据库。

----------------------------------

问题2

我的数据库老是被锁住,网页打不开,请高手帮忙!!我的是:<%

scadb=mydata&"datahotel/#@@##" 'mydata 为各文件中设置的路径,请不要

改动

connstr="Provider=.4.0;Data

h(""&scadb&"")

Source=" &

On Error Resume Next

Set conn = Object("tion")

connstr

If Err Then

Set Conn = Nothing

"

数据库连接出错!!!请检查数据库连接指向^--^

"

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$"

connstr="Provider=.4.0;Data Source=" & h(dbpath)

Set conn = Object("tion")

connstr

关闭语句不仅是.

(断开记录)

Set Rs=Nothing

还有:(断开连接)

Set Conn=Nothing

排除上面的原因之后.

用ACCESS打开你的数据库,选择菜单中的[工具]->[选项]->[高级]

更改[默认打开模式]为[共享],更改[默认记录锁定]为[不锁定].

如仍然不行将下面的选项[使用记录级锁定]也取消.

确定后保存,然后打开,修复/压缩数据库.

删除目录中的LDB文件(如无法删除,先结束相关进程或重新启动计算机删除即可)

有时候检查一下是否有页面同时争用资源的情况,我的问题就是属于这个情况造成的!欢迎大家光

临指导我们的网站:(济宁网站建设专家-易远网络)

问题6

关于“锁”的问题

尽管access不是一个大型的数据库,但也要考虑多用户使用时的并发性及有可能产生的错误,如

“读脏数据”、“不可重复读”、“修改丢失”等,所以并发控制也是很重要的。我们知道,“锁”

是解决并发出错问题的主要方法,“锁”有主要有两种:排它锁“x”与共享锁“s”,在access环境

中,怎样应用这两“锁”呢?

没有人能指教吗?请大家展开讨论。好似ACCESS只有共享锁,而没有排它锁,即使有用户正在

编辑某一数据,别的用户照样可以读这个数据,这样就有可能产生一些并发错误,如“不可重复读”

等,怎样锁定正在编辑的数据,使数据没有修改结束之前,数据不可读呢?

独占就不能供多用户使用了,我们要探索种在多用户环境下的解决方法。

上面的朋友的回答都没有能解决问题。对于并发的数据库而言,排它锁是必须的。举个例子说,

如有一货物销售系统,现在某种货物库存还有100箱,此时甲进行操作,拟售出货物60箱,系统查

出货物还有100箱,售出操作允许执行;就在甲正进行售出操作的几乎同一时刻(甲已经键入售出60

箱,但有些其他信息正在键入或信息正在通信线路上传输,售出记录还没有真正保存到数据库),乙也

拟售出这种货物60箱,因为甲的操作还没有结束,记录还没有保存,所以当前库存还是100箱,所

以系统也允许乙售出这种货物60箱。当两人的操作都完成了之后,实际共售出了货物120箱,但库

存根本就没有这么多货,并发操作引起了错误。为了备免这样的情况发生,就要用到“排它锁S”,

当某一操作员拟售出某种货物的时候,必须获得这种货物的“排它锁”,锁定这种货物,使其他用户

不能编辑相关的数据,也不能读取相关的数据。如上例,甲拟售出某货物60箱,就将这种货物锁定,

在甲没有操作完成期间,乙也拟售出货物60箱,因甲已锁定数据,乙没法读取数据,只能等待甲释

放“锁”。甲操作完成之后,释放了“锁”,乙获得控制权可以读取数据,但这时库存量已经是40

箱了,少于60箱,乙只能以不大于40箱的数量售出这种货物,这就解了并发出错的问题。“排它锁”

在大型数据库中都是有的,但在ACCESS中不知有没有,不知该怎样用法?如果ACCESS本身没有这

种锁,我们该怎样用VB来实现这种“锁”? 请大家展开讨论,指点迷津。

答:

多用户,使用事务是非常好的.但要一定的代码来实现哟.另外,窗体还有锁定方式可以选择.