sql server性能分析--检测数据库阻塞语句

时间:2021-05-27 23:59:51
sql server性能分析--检测数据库阻塞语句create   PROCEDURE   [ dbo ] . [ auto_checkblocks ]   AS
sql server性能分析--检测数据库阻塞语句
set  nocount  on
sql server性能分析--检测数据库阻塞语句
if   exists  (  select   *   from  master..sysprocesses  where  blocked  <>   0  )
sql server性能分析--检测数据库阻塞语句
sql server性能分析--检测数据库阻塞语句
begin
sql server性能分析--检测数据库阻塞语句sql server性能分析--检测数据库阻塞语句    
/* show top blockers, but no duplicates */
sql server性能分析--检测数据库阻塞语句    
select   ' 请尝试使用KILL [SPID] 来杀进程 '
sql server性能分析--检测数据库阻塞语句  
--       select '请尝试使用SP_LOCK [SPID]来显示锁信息,用OBJECT_NAME(ID)来显示锁对象名称或用sp_who [SPID] 来显示信息'
sql server性能分析--检测数据库阻塞语句
    --      select '在使用OBJECT_NAME显示对象名称时请注意对应的db_id'  
sql server性能分析--检测数据库阻塞语句
        select   ' 以下是引起阻塞的语句 '  
sql server性能分析--检测数据库阻塞语句    
select   distinct
sql server性能分析--检测数据库阻塞语句    
' 进程ID '                =   str ( a.spid,  4  ),
sql server性能分析--检测数据库阻塞语句    
' 进程ID状态 '            =   convert char ( 20 ), a.status ),
sql server性能分析--检测数据库阻塞语句    
' 分块进程的进程ID '      =   str ( a.blocked,  2  ),
sql server性能分析--检测数据库阻塞语句    
' 工作站名称 '            =   convert char (4 0 ), a.hostname ),
sql server性能分析--检测数据库阻塞语句    
' 执行命令的用户 '        =   convert char (2 0 ),  suser_name ( a.uid ) ),
sql server性能分析--检测数据库阻塞语句    
' 数据库名 '              =   convert char (2 0 ),  db_name (a.dbid ) ),       
sql server性能分析--检测数据库阻塞语句    
' 应用程序名 '            =   convert char (3 0 ), a.program_name ),
sql server性能分析--检测数据库阻塞语句    
' 正在执行的命令 '        =   convert char (2 6 ), a.cmd ),
sql server性能分析--检测数据库阻塞语句    
' 累计CPU时间 '           =   str ( a.cpu,  7  ),
sql server性能分析--检测数据库阻塞语句    
' IO '                    =   str ( a.physical_io,  7  ),
sql server性能分析--检测数据库阻塞语句        
' 登录名 '                =  a.loginame,
sql server性能分析--检测数据库阻塞语句    
' 执行语句 ' = b. text
sql server性能分析--检测数据库阻塞语句    
from  master..sysprocesses a
sql server性能分析--检测数据库阻塞语句    
cross  apply sys.dm_exec_sql_text(a.sql_handle) b
sql server性能分析--检测数据库阻塞语句    
where  spid  in  (  select  blocked  from  master..sysprocesses )
sql server性能分析--检测数据库阻塞语句    
and  blocked  =   0
sql server性能分析--检测数据库阻塞语句    
order   by   str (spid, 4 )
sql server性能分析--检测数据库阻塞语句
sql server性能分析--检测数据库阻塞语句sql server性能分析--检测数据库阻塞语句    
/* 显示阻塞牺牲品 */
sql server性能分析--检测数据库阻塞语句    
select   ' 以下是被阻塞的等待执行的语句 '  
sql server性能分析--检测数据库阻塞语句        
select  
sql server性能分析--检测数据库阻塞语句    
' 进程ID[SPID] '          =   str ( a.spid,  4  ),
sql server性能分析--检测数据库阻塞语句    
' 进程ID状态 '            =   convert ( char (2 0 ), a.status ),
sql server性能分析--检测数据库阻塞语句    
' 分块进程的进程ID '      =   str ( a.blocked,  2  ),
sql server性能分析--检测数据库阻塞语句    
' 工作站名称 '            =   convert char (4 0 ), a.hostname ),
sql server性能分析--检测数据库阻塞语句    
' 执行命令的用户 '        =   convert char ( 10 ),  suser_name ( a.uid ) ),
sql server性能分析--检测数据库阻塞语句    
' 数据库名 '              =   convert char ( 10 ),  db_name ( a.dbid ) ),       
sql server性能分析--检测数据库阻塞语句    
' 应用程序名 '            =   convert char (2 0 ), a.program_name ),
sql server性能分析--检测数据库阻塞语句    
' 正在执行的命令 '        =   convert char ( 16 ), a.cmd ),
sql server性能分析--检测数据库阻塞语句    
' 累计CPU时间 '           =   str ( a.cpu,  7  ),
sql server性能分析--检测数据库阻塞语句    
' IO '                    =   str ( a.physical_io,  7  ),
sql server性能分析--检测数据库阻塞语句        
' 登录名 '                =  a.loginame,
sql server性能分析--检测数据库阻塞语句    
' 执行语句 ' = b. text
sql server性能分析--检测数据库阻塞语句    
from  master..sysprocesses a
sql server性能分析--检测数据库阻塞语句    
cross  apply sys.dm_exec_sql_text(a.sql_handle) b
sql server性能分析--检测数据库阻塞语句    
where  blocked  <>   0
sql server性能分析--检测数据库阻塞语句    
order   by  spid
sql server性能分析--检测数据库阻塞语句
end
sql server性能分析--检测数据库阻塞语句
sql server性能分析--检测数据库阻塞语句
else
sql server性能分析--检测数据库阻塞语句
begin
sql server性能分析--检测数据库阻塞语句    
select   ' 恭喜!当前没有阻塞,当前的进程信息如下. ' convert  ( char ( 24 ), getdate (), 13 )
sql server性能分析--检测数据库阻塞语句        
select  
sql server性能分析--检测数据库阻塞语句    
' 进程ID '                =   str ( spid,  4  ),
sql server性能分析--检测数据库阻塞语句    
' 进程ID状态 '            =   convert char (2 0 ), status ),
sql server性能分析--检测数据库阻塞语句    
' 分块进程的进程ID '      =   str ( blocked,  2  ),
sql server性能分析--检测数据库阻塞语句    
' 工作站名称 '            =   convert char (4 0 ), hostname ),
sql server性能分析--检测数据库阻塞语句    
' 执行命令的用户 '        =   convert char ( 10 ),  suser_name ( uid ) ),
sql server性能分析--检测数据库阻塞语句    
' 数据库名 '              =   convert char ( 10 ),  db_name ( dbid ) ),       
sql server性能分析--检测数据库阻塞语句    
' 应用程序名 '            =   convert char (2 0 ), program_name ),
sql server性能分析--检测数据库阻塞语句    
' 正在执行的命令 '        =   convert char (2 6 ), cmd ),
sql server性能分析--检测数据库阻塞语句    
' 累计CPU时间 '           =   str ( cpu,  7  ),
sql server性能分析--检测数据库阻塞语句    
' IO '                    =   str ( physical_io,  7  ),
sql server性能分析--检测数据库阻塞语句        
' 登录名 '                =  loginame
sql server性能分析--检测数据库阻塞语句    
from  master..sysprocesses
sql server性能分析--检测数据库阻塞语句    
where  blocked  =   0
sql server性能分析--检测数据库阻塞语句    
order   by  spid
sql server性能分析--检测数据库阻塞语句
end
sql server性能分析--检测数据库阻塞语句
sql server性能分析--检测数据库阻塞语句
return