Following are the instructions for script.
1) Execute the above SQL statement on Master Database.
2) once this stored procedure is created, execute the SP against Master DB.
Exec SP_GetBlockedInfo
Following are the instructions for script.
1) Execute the above SQL statement on Master Database.
2) once this stored procedure is created, execute the SP against Master DB.
Exec SP_GetBlockedInfo
Create Proc SP_GetBlockedInfo as declare @spid int declare @blocked int declare @db_name varchar(500) declare @program_name varchar(1000) declare @loginame varchar(500) declare @login_time datetime declare @last_batch datetime declare @str varchar(100) declare @runtimeinmin int declare @min int set @min = 1 create table #bufferspid(eventtype varchar(200) ,parameters varchar(200) ,eventinfo varchar(7600)) create table #bufferblocked(eventtype varchar(200) ,parameters varchar(200) ,eventinfo varchar(7600)) create table #blocked( row_id int identity (1,1) ,spid int ,sqlspid varchar(3000) ,blockedby int ,sqlblockedby varchar(3000) ,servername varchar(200) ,dbname varchar(200) ,programname varchar(200) ,loginame varchar(500) ,login_time datetime ,last_batch datetime ,runtimeinmin int) IF Exists (select * from master..syscursors with (nolock) where cursor_name = 'cur_blocked_spid') Begin close cur_blocked_spid deallocate cur_blocked_spid End declare cur_blocked_spid cursor read_only for select spid ,blocked ,db_name(dbid) ,program_name ,loginame ,login_time ,last_batch ,datediff(mi,last_batch,getdate()) runtimeinmin from master.dbo.sysprocesses with (nolock) where blocked > 0 open cur_blocked_spid fetch next from cur_blocked_spid into @spid,@blocked,@db_name,@program_name,@loginame,@login_time,@last_batch,@runtimeinmin while (@@fetch_status <> -1) begin if (@@fetch_status <> -2) begin set @str = 'dbcc inputbuffer ('+convert(varchar,@spid)+')' insert #bufferspid exec (@str) set @str = 'dbcc inputbuffer ('+convert(varchar,@blocked)+')' insert #bufferblocked exec (@str) insert into #blocked (spid,sqlspid,blockedby,sqlblockedby,servername,dbname,programname,loginame,login_time,last_batch,runtimeinmin) select @spid as spid ,(select eventinfo from #bufferspid) as sqlspid ,@blocked as blockedby ,(select eventinfo from #bufferblocked) as sqlblockedby ,@@servername as servername ,@db_name as dbname ,@program_name as programname ,@loginame as loginame ,@login_time as login_time ,@last_batch as last_batch ,@runtimeinmin as runtimeinmin truncate table #bufferspid truncate table #bufferblocked end fetch next from cur_blocked_spid into @spid,@blocked,@db_name,@program_name,@loginame,@login_time,@last_batch,@runtimeinmin end close cur_blocked_spid deallocate cur_blocked_spid select spid ,programname ,sqlspid ,blockedby ,sqlblockedby ,servername ,dbname,loginame ,login_time ,last_batch ,runtimeinmin from #blocked -- when testing with query analyzer open the following code. DROP TABLE #BUFFERSPID DROP TABLE #BUFFERBLOCKED DROP TABLE #BLOCKED