_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

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

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:具体实例故障访问

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

  死锁原因:

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

  4、查看当前进程,或死锁进程,并能自动杀掉死进程:

  处理死锁

  查看当前进程,或死锁进程,并能自动杀掉死进程。因为是针对死的,所以如果有死锁进程,只能查看死锁进程。当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程。

    黑客防线网安服务器维护方案本篇连接:http://shop.rongsen.com.cn/show-10210-1.html
网站维护教程更新时间:2012-03-21 02:30:58  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer