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

时间:2022-01-01 16:27:22

在一天某个时间段内打不开,等待好几分钟就会说asp脚本超时,但FTP可以登陆进去,查看数据库目录时,发现与数据库(我的数据库是access数据库)同名的记录锁定信息文件 (.ldb文件)一直都在那里

于是我登陆主机的管理面板,重启了网站服务,ldb文件就消失了,网站打开也正常了,但过了数小时后,网站又再次出现以上情况,此种情况持续了好一段时间,网站后来被虚拟主机的供应商屏蔽了,反馈给我的说法是因为我的网站运行时大量占用CPU资源,所以予暂时屏蔽,让我对网站程序或数据库进行优化。

在百度上搜索了一下这方面的情况,结果也不少,总结下来主要都是因为对数据库存取完后,没有及时释放记录集和断开数据库连接,以下谈谈操作Access数据库的标准方法:

1、数据库连接方法:Conn.asp

  1. <% 
  2.  
  3. dim conn 
  4.  
  5. dim connstr 
  6.  
  7. dim db 
  8.  
  9. db="database/data.mdb" 
  10.  
  11. Set conn = Server.CreateObject("ADODB.Connection"
  12.  
  13. connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&""
  14.  
  15. conn.Open connstr 
  16.  
  17. If Err Then 
  18.  
  19. err.Clear 
  20.  
  21. Set Conn = Nothing 
  22.  
  23. Response.Write "服务器正在维护,请稍后再试。" 
  24.  
  25. Response.End 
  26.  
  27. End If 
  28.  
  29. Sub CloseConn() 
  30.  
  31. '以下是断开数据库连接语句 
  32.  
  33. conn.close 
  34.  
  35. set conn=nothing 
  36.  
  37. End Sub 
  38.  
  39. %> 
  40.  
  41. 2、关闭释放记录集 
  42.  
  43. rs.close 
  44.  
  45. set rs=nothing 
  46.  
  47. 3、断开数据库连接 
  48.  
  49. conn.close 
  50.  
  51. set conn=nothing 
  52.  
  53. 结合以上三个内容,得出以下操作Access数据库的标准方法 Test.asp 
  54.  
  55. <% 
  56.  
  57. sql="select * from table order by id" 
  58.  
  59. set rs=server.createobject("adodb.recordset"
  60.  
  61. rs.open sql,conn,1,1 
  62.  
  63. if not rs.eof then 
  64.  
  65. tel=rs("tel"
  66.  
  67. fax=rs("fax"
  68.  
  69. end if 
  70.  
  71. '以下关闭并释放记录集语句 
  72.  
  73. rs.close 
  74.  
  75. set rs=nothing 
  76.  
  77. '调用断开数据库连接子函数 
  78.  
  79. Call CloseConn() 
  80.  
  81. %> 

根据这个标准,我对我的网站程序进行地毡式的排查、补漏,最后我的网站终于得于正常访问,再也没有出现以前数据库死锁的情况了。