数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQLServer死锁的解除方法


发布日期:2024年02月11日
 
SQLServer死锁的解除方法

SQL Server死锁使我们经常遇到的问题下面就为您介绍如何查询SQL Server死锁希望对您学习SQL Server死锁方面能有所帮助

SQL Server死锁的查询方法

exec masterdbop_lockinfo 显示死锁的进程不显示正常的进程

exec masterdbop_lockinfo 杀死死锁的进程不显示正常的进程

SQL Server死锁的解除方法

Create proc p_lockinfo

@kill_lock_spid bit= 是否杀掉死锁的进程 杀掉 仅显示

@show_spid_if_nolock bit= 如果没有死锁的进程是否显示正常进程信息 显示 不显示

as

declare @count int@s nvarchar(@i int

select id=identity(int标志

进程ID=spid线程ID=kpid块进程ID=blocked数据库ID=dbid

数据库名=db_name(dbid)用户ID=uid用户名=loginame累计CPU时间=cpu

登陆时间=login_time打开事务数=open_tran 进程状态=status

工作站名=hostname应用程序名=program_name工作站进程ID=hostprocess

域名=nt_domain网卡地址=net_address

into #t from(

select 标志=死锁的进程

spidkpidablockeddbiduidloginamecpulogin_timeopen_tran

statushostnameprogram_namehostprocessnt_domainnet_address

s=aspids=

from mastersysprocesses a join (

select blocked from mastersysprocesses group by blocked

)b on aspid=bblocked where ablocked=

union all

select |_牺牲品_>

spidkpidblockeddbiduidloginamecpulogin_timeopen_tran

statushostnameprogram_namehostprocessnt_domainnet_address

s=blockeds=

from mastersysprocesses a where blocked<>

)a order by ss

select @count=@@rowcount@i=

if @count= and @show_spid_if_nolock=

begin

insert #t

select 标志=正常的进程

spidkpidblockeddbiddb_name(dbid)uidloginamecpulogin_time

open_transtatushostnameprogram_namehostprocessnt_domainnet_address

from mastersysprocesses

set @count=@@rowcount

end

if @count>

begin

create table #t(id int identity(a nvarchar(b IntEventInfo nvarchar())

if @kill_lock_spid=

begin

declare @spid varchar(@标志 varchar(

while @i<=@count

begin

select @spid=进程ID@标志=标志 from #t whereid=@i

insert #t exec(dbcc inputbuffer(+@spid+

if @标志=死锁的进程 exec(kill+@spid)

set @i=@i+

end

end

else

while @i<=@count

begin

select @s=dbcc inputbuffer(+cast(进程ID as varchar)+ from #t whereid=@i

insert #t exec(@s)

set @i=@i+

end

select a*进程的SQL语句=bEventInfo

from #t a join #t b on aid=bid

end

上一篇:使用SQLserver导入和索引Microsoft Word文档

下一篇:确定SQL Server用户是否属于某个角色