数据库死锁导致站点访问故障解决方案

2008-04-02 10:33:57来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  前段时间完成了一个项目,但是现在该网站访问不了,真是郁闷,主机重启之后,网站运行正常,“狗”(google)也放了,“csdn”也帖了,没有解决,苦恼,后来发现是数据库死锁造成的问题。 通过这个问题,我对数据库思索也小小研究了一下,写一点相关知识。

  死锁原因:

  提取查询数据相应数据,修改Stat表,都是修改同一条数据,进行大数据量的操作,多用户同时操作时,造成数据库死锁和阻塞;

  相关知识:

  1、SQL死锁和阻塞。

  2、死锁测试方法:程式中将数据库操作,循环操作1万次,打开多个窗口同时执行。

  3、查找数据库死锁原因的方法。

  下面的SQL语句运行之后,便能够查找出SQLServer的死锁和阻塞的源头。

use master
go
declare @spid int,@bl int
DECLARE s_cur CURSOR FOR
select 0 ,blocked
from (select * from sysprocesses where blocked>0 ) a
where not exists(select * from (select * from sysprocesses where blocked>0 ) b
where a.blocked=spid)
union select spid,blocked from sysprocesses where blocked>0
OPEN s_cur
FETCH NEXT FROM s_cur INTO @spid,@bl
WHILE @@FETCH_STATUS = 0
begin
if @spid =0
select '引起数据库死锁的是:
' CAST(@bl AS VARCHAR(10)) '进程号,其执行的SQL语法如下'
else
select '进程号SPID:' CAST(@spid AS VARCHAR(10)) '被' '
进程号SPID:' CAST(@bl AS VARCHAR(10)) '阻塞,其当前进程执行的SQL语法如下'
DBCC INPUTBUFFER (@bl )
FETCH NEXT FROM s_cur INTO @spid,@bl
end
CLOSE s_cur
DEALLOCATE s_cur

exec sp_who2

共2页。 1 2 :

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 安装了MSSQL服务器上无法安装软件?

下一篇: SQL Server灾难恢复:重创历史性数据