warn:2016-05-23 12:57:17,307 - sql error: 1205, sqlstate: 40001
error:2016-05-23 12:57:17,307 - 事務(程序 id 53)與另乙個程序被死鎖在 鎖 資源上,並且已被選作死鎖犧牲品。請重新執行該事務。
declare @spid int
declare @blk int
declare @count int
declare @index int
declare @lock tinyint
set @lock=0
create table #temp_who_lock
(id int identity(1, 1),
spid int,
blk int
)--if @@error<>0 return @@error
insert into #temp_who_lock
(spid,
blk)
select 0,
blocked
from (select *
from master..sysprocesses
where blocked > 0)a
where not exists(select *
from master..sysprocesses
where a.blocked = spid
and blocked > 0)
union
select spid,
blocked
from master..sysprocesses
where blocked > 0
--if @@error<>0 return @@error
select @count = count(*),
@index = 1
from #temp_who_lock
--select @count,@index
--if @@error<>0 return @@error
if @count = 0
begin
select '沒有阻塞和死鎖資訊'
--return 0
endwhile @index <= @count
begin
if exists(select 1
from #temp_who_lock a
where id > @index
and exists(select 1
from #temp_who_lock
where id <= @index
and a.blk = spid))
begin
set @lock=1
select @spid = spid,
@blk = blk
from #temp_who_lock
where id = @index
select '引起資料庫死鎖的是: ' + cast(@spid as varchar(10)) + '程序號,其執行的sql語法如下' ;
select @spid,
@blk
dbcc inputbuffer(@spid)
dbcc inputbuffer(@blk)
endset @index=@index + 1
endif @lock = 0
begin
set @index=1
while @index <= @count
begin
select @spid = spid,
@blk = blk
from #temp_who_lock
where id = @index
if @spid = 0
select '引起阻塞的是:' + cast(@blk as varchar(10)) + '程序號,其執行的sql語法如下'
else
select '程序號spid:' + cast(@spid as varchar(10)) + '被' + '程序號spid:' + cast(@blk as varchar(10)) + '阻塞,其當前程序執行的sql語法如下'
print ( ltrim(@spid) + ''+ ltrim(@blk));
if(@spid <> 0)
begin
dbcc inputbuffer(@spid) --
enddbcc inputbuffer(@blk) --引起阻塞語句
set @index=@index + 1
endend
drop table #temp_who_lock
--return 0
--kill 54
SqlServer 檢視死鎖的程序
這個工具,用來檢視一些當時的執行狀態.和乾掉程序.但是這個工具只能檢視部分哪個表被鎖住了.也無法知道是哪個程序和sql導致了鎖程序.只能檢視一些其它的資訊.至於如何檢視死鎖的表,需要用到下面的sql.然後根據查出來的 程序id 去上面的工具中 檢視詳細資訊.可以檢視到引起死鎖的sql 檢視被鎖表 s...
SqlServer 檢視死鎖的程序
這個工具,用來檢視一些當時的執行狀態.和乾掉程序.但是這個工具只能檢視部分哪個表被鎖住了.也無法知道是哪個程序和sql導致了鎖程序.只能檢視一些其它的資訊.至於如何檢視死鎖的表,需要用到下面的sql.然後根據查出來的 程序id 去上面的工具中 檢視詳細資訊.可以檢視到引起死鎖的sql 檢視被鎖表 s...
檢視SQL Server 版本
如何檢視sql server的版本 方法一 在查詢分析器中輸入 select version 並執行,檢視執行結果,對照便知版本。8.00.194 sql server 2000 rtm 8.00.384 sp1 8.00.534 sp2 8.00.760 sp3 8.00.2039 sp4 方法二...