WEB开发网
开发学院数据库MSSQL Server 解决死锁导致网站访问故障的具体实例 阅读

解决死锁导致网站访问故障的具体实例

 2007-05-19 09:44:16 来源:WEB开发网   
核心提示:前段时间完成了一个项目,但是现在该网站访问不了,解决死锁导致网站访问故障的具体实例,真是郁闷,主机重启之后,3、查找数据库死锁原因的方法,下面的SQL语句运行之后,网站运行正常,尝试了很多方法都没有解决

前段时间完成了一个项目,但是现在该网站访问不了,真是郁闷,主机重启之后,网站运行正常,尝试了很多方法都没有解决,苦恼。后来发现是数据库死锁造成的问题。 通过这个问题,我对数据库也研究了一下,写一点相关知识。

死锁原因:

提取查询数据相应数据,修改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

1 2  下一页

Tags:解决 死锁 导致

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接