sqlserver查詢資料庫死鎖儲存過程 sql

2021-09-01 21:42:36 字數 2173 閱讀 4518

use [xx庫]

go/****** object: storedprocedure [dbo].[sp_who_lock] script date: 01/01/2014 14:52:27 ******/

set ansi_nulls on

goset quoted_identifier on

gocreate procedure [dbo].[sp_who_lock]

as begin

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

if @@error<>0 return @@error

if @count=0

begin

select '沒有阻塞和死鎖資訊'

return 0

end

while @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)

end

set @index=@index+1

end

if @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語法如下'

dbcc inputbuffer(@spid)

dbcc inputbuffer(@blk)

set @index=@index+1

end

end

drop table #temp_who_lock

return 0

end

go

SQL Server資料庫查詢

開啟我們的sql server資料庫,找到要查詢的資料庫表,右鍵單擊然後選擇新建查詢,select 選擇我們要查詢的表sys academe學院表 聯合 sys class.classname班級表的班級名稱和sys grade.gradename年級表的年級編號來查詢出資料。下面是查詢的 sele...

SQL Server 跨資料庫查詢

語句 select from 資料庫a.dbo.表a a,資料庫b.dbo.表b b where a.field b.field dbo 可以省略 如 select from 資料庫a.表a a,資料庫b.表b b where a.field b.field sqlserver資料庫 這句是對映乙個...

查詢SQL SERVER 資料庫版本

select substring cast serverproperty productversion as nvarchar 128 1,charindex cast serverproperty productversion as nvarchar 128 1 1 8 對應 sql server...