查看阻塞的SQL语句

sqlserver dmv 动态管理视图 ,

sys.dm_exec_query_profiles: 该视图监视sql运行的实时进度。监视sql运行的每一步的详细情况。可以理解为执行计划的每一步的详细信息。区别是执行计划是预估的,这个视图展示的真实的情况。这个视图是sql运行性能剖析的重要的视图

sys.dm_exec_connections:该视图返回与数据库示例链接的相关信息。

sys.dm_exec_sessions:该视图返回会话信息。每个会话是一条数据

sys.dm_exec_requests:该视图返回请求信息。每个请求是一条数据。

sys.dm_exec_sql_text:该函数返回sql_handl标识的sql语句。

sys.dm_exec_session_wait_stats:该视图返回会话的等待信息。和sys.dm_os_session_wait_stats 视图返回的信息类似。并且在sys.dm_os_session_wait_stats视图的官方文档页面可以查询到等待类型的具体信息。

sys.dm_tran_locks:该视图返回锁资源管理器的相关信息 


SELECT  distinct   [Spid] = session_Id, ecid, [Database] = DB_NAME(sp.dbid), start_time,
 [User] = nt_username, [Status] = er.status, 
 [Wait] = wait_type, 
 [Individual Query] = SUBSTRING(qt.text, er.statement_start_offset / 2, (CASE WHEN er.statement_end_offset = - 1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) 
                      * 2 ELSE er.statement_end_offset END - er.statement_start_offset) / 2),
                       [Parent Query] = qt.text, 
                       Program = program_name, Hostname, 
                       nt_domain
FROM    
     sys.dm_exec_requests er INNER JOIN  sys.sysprocesses sp ON er.session_id = sp.spid 
     CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
WHERE     session_Id > 50 /* Ignore system spids.*/ AND session_Id NOT IN (@@SPID);
 


常用的方法

 --1查看否存在阻塞进程,blocked>0都是当前被阻塞的进程
 SELECT * FROM sys.sysprocesses WHERE blocked >0 ORDER BY blocked;

declare @spid varchar(10)
SELECT @spid =spid FROM sys.sysprocesses WHERE blocked >0 ORDER BY blocked;

--2 找到被阻塞的线程后,想要继续查看进程被谁阻塞,分析导致阻塞的源头
SELECT * FROM sys.sysprocesses WHERE spid =@spid --这是你要分析的进程ID

--3查看此进程执行的SQL 语句
DBCC inputbuffer(@spid);

--4 如果想要结束当前进程,KILL 掉当前导致阻塞的SQL
KILL @spid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值