Access数据库时出现死锁.ldb的解决方法

    文章来源:中国互联 更新时间:2014-7-8 14:12:48
分享:

Asp操作Access数据库时出现死锁.ldb导致网站访问缓慢的问题描述

最近asp网站出现数据库错误,在ftp登陆后发现原来的后缀MDB文件多了一个后缀LDB文件,是自动被锁,在一天某个时间段内打不开,等待好几分钟就会说asp脚本超时,但FTP可以登陆进去,查看数据库目录时,发现与数据库(数据库是access数据库)同名的记录锁定信息文件 (.ldb文件)一直都在那里于是我登陆主机的管理面板,重启了网站服务,ldb文件就消失了,网站打开也正常了,但过了数小时后,网站又再次出现以上情况。

Access数据库时出现死锁.ldb问题的原因


.ldb的文件是ACCESS读写的时候的临时文件,当前台asp调用网站数据库的时候就会自动产生ldb文件,调用结束后就没有了!

可当有时访问量大的时候(或数据量大),asp程序运行时间太长(有时会超过iis所设置的asp超时时间),这时,服务器会结束掉asp进程,而asp所打开的ldb文件则卡在那里关不掉了! 所以就会“卡”。

Access数据库.ldb导致网站不能访问的解决办法

一.服务器空间改进

你的程序多,数据库多,IIS要使用不限制的,并且CPU分配的要多一点好,否则依然会“卡”。

另外一方面就是尽量优化你的页面.比如生成静态页面了(你的CPU占用少才1%)静态页面相对好点.再或者用什么DIC+CSS做页面呀这样不怕你卡了.最少访客不会盯着你的大白页面呆着.


二.访问数据库的程序优化

主要都是因为对数据库存取完后,没有及时释放记录集和断开数据库连接

rs.close
set rs=nothing

conn.close
set conn=nothing

<%
dim conn
dim connstr
dim db
db="database/data.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath(""&db&"")
conn.Open connstr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "服务器正在维护,请稍后再试。"
Response.End
End If
Sub CloseConn()
以下是断开数据库连接语句
conn.close
set conn=nothing
End Sub
%>


<%
sql="select * from table order by id"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
tel=rs("tel")
fax=rs("fax")
end if
以下关闭并释放记录集语句
rs.close
set rs=nothing
调用断开数据库连接子函数
Call CloseConn()
%>



三.排除上面的原因之后,如果还没有解决,请尝试以下方法。

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

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

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

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

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


在线咨询
  • 在线时间
  • 8:00-21:00
Access数据库时出现死锁.ldb的解决方法-中国互联

Access数据库时出现死锁.ldb的解决方法

    文章来源:中国互联 更新时间:2014-7-8 14:12:48
分享:

Asp操作Access数据库时出现死锁.ldb导致网站访问缓慢的问题描述

最近asp网站出现数据库错误,在ftp登陆后发现原来的后缀MDB文件多了一个后缀LDB文件,是自动被锁,在一天某个时间段内打不开,等待好几分钟就会说asp脚本超时,但FTP可以登陆进去,查看数据库目录时,发现与数据库(数据库是access数据库)同名的记录锁定信息文件 (.ldb文件)一直都在那里于是我登陆主机的管理面板,重启了网站服务,ldb文件就消失了,网站打开也正常了,但过了数小时后,网站又再次出现以上情况。

Access数据库时出现死锁.ldb问题的原因


.ldb的文件是ACCESS读写的时候的临时文件,当前台asp调用网站数据库的时候就会自动产生ldb文件,调用结束后就没有了!

可当有时访问量大的时候(或数据量大),asp程序运行时间太长(有时会超过iis所设置的asp超时时间),这时,服务器会结束掉asp进程,而asp所打开的ldb文件则卡在那里关不掉了! 所以就会“卡”。

Access数据库.ldb导致网站不能访问的解决办法

一.服务器空间改进

你的程序多,数据库多,IIS要使用不限制的,并且CPU分配的要多一点好,否则依然会“卡”。

另外一方面就是尽量优化你的页面.比如生成静态页面了(你的CPU占用少才1%)静态页面相对好点.再或者用什么DIC+CSS做页面呀这样不怕你卡了.最少访客不会盯着你的大白页面呆着.


二.访问数据库的程序优化

主要都是因为对数据库存取完后,没有及时释放记录集和断开数据库连接

rs.close
set rs=nothing

conn.close
set conn=nothing

<%
dim conn
dim connstr
dim db
db="database/data.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath(""&db&"")
conn.Open connstr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "服务器正在维护,请稍后再试。"
Response.End
End If
Sub CloseConn()
以下是断开数据库连接语句
conn.close
set conn=nothing
End Sub
%>


<%
sql="select * from table order by id"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
tel=rs("tel")
fax=rs("fax")
end if
以下关闭并释放记录集语句
rs.close
set rs=nothing
调用断开数据库连接子函数
Call CloseConn()
%>



三.排除上面的原因之后,如果还没有解决,请尝试以下方法。

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

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

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

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

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


在线咨询
  • 在线时间
  • 8:00-21:00