sp_who2
показать все соединения с сервером, если вы не указали spid явно
О блокировках см.
exec sp_locks
Чтобы узнать, кто кого блокирует:
set nocount on
create table #t_sql (EventType text, Parameters int,EventInfo text, spid smallint default(0))
declare @qs_blocking_list table (
spid int,
blocked int,
loginame sysname,
nt_username sysname,
lastwaittype sysname,
waitresource sysname,
status sysname,
waittime bigint,
program_name sysname,
cmd sysname,
cpu bigint,
physical_io bigint,
hostname sysname,
dbid int
)
insert into @qs_blocking_list (
spid ,
blocked ,
loginame,
nt_username ,
lastwaittype ,
waitresource ,
status ,
waittime ,
program_name ,
cmd ,
cpu ,
physical_io ,
hostname ,
dbid
)
select
spid ,
blocked ,
loginame,
nt_username ,
lastwaittype ,
waitresource ,
status ,
waittime ,
program_name ,
cmd ,
cpu ,
physical_io ,
hostname ,
dbid
from master.dbo.sysprocesses
delete from @qs_blocking_list
where not ( blocked <> 0 or (spid in (select blocked from @qs_blocking_list)) )
declare @spid smallint
declare @sql nvarchar(255)
set @spid = 0
while 1=1
begin
select @spid = min(spid) from @qs_blocking_list where @spid<spid
if @spid is null
break
set @sql = 'dbcc inputbuffer ('+convert(nvarchar(20),@spid)+')'
insert into #t_sql (EventType, Parameters, EventInfo)
exec (@sql)
update #t_sql set spid = @spid where spid = 0
end
set nocount off
select b.spid as 'spid'
, blocked as 'BlockedBySPID'
, rtrim(loginame) as 'SQLUser'
, rtrim(nt_username) as 'NTUser'
, rtrim(lastwaittype) as 'Type'
, rtrim(waitresource) as 'Resource'
, rtrim(status) +
case when blocked > 0 then ' and blocked' else '' end +
case when b.spid in (select blocked from @qs_blocking_list) then ' and blocking' else '' end as 'Status'
, waittime as 'WaitTimeMS'
, rtrim(program_name) as 'Program'
, rtrim(cmd) as 'Command'
, cpu as 'CPU'
, physical_io as 'PhysicalIO'
, rtrim(hostname) as 'HostName'
, case
when dbid = 0 then ''
else
db_name(dbid)
end as 'DBName'
, isnull(sql.EventInfo,'/* SQL Text not available */') as 'sql_text'
from @qs_blocking_list b
left outer join #t_sql sql on b.spid = sql.spid
drop table #t_sql