sqlserver查询是否阻塞

查询当前正在执行的语句

SELECT 
der.[session_id],der.[blocking_session_id], 
sp.lastwaittype,sp.hostname,sp.program_name,sp.loginame, 
der.[start_time] AS '开始时间', 
der.[status] AS '状态', 
dest.[text] AS 'sql语句', 
DB_NAME(der.[database_id]) AS '数据库名', 
der.[wait_type] AS '等待资源类型', 
der.[wait_time] AS '等待时间', 
der.[wait_resource] AS '等待的资源', 
der.[logical_reads] AS '逻辑读次数' 
FROM sys.[dm_exec_requests] AS der 
INNER JOIN master.dbo.sysprocesses AS sp ON der.session_id=sp.spid 
CROSS APPLY sys.[dm_exec_sql_text](der.[sql_handle]) AS dest 
--WHERE [session_id]>50 AND session_id<>@@SPID 
ORDER BY der.[session_id] 
GO

 


是否堵塞

SELECT spid,blocked,waittime,waittype,waitresource,p.dbid,cpu,physical_io,memusage,open_tran 
,status,login_time,last_batch,hostname,program_name,hostprocess,loginame,cmd,text 
FROM master.dbo.sysprocesses p CROSS APPLY sys.dm_exec_sql_text(p.sql_handle) s 
WHERE blocked > 0 OR spid IN(SELECT blocked FROM master.dbo.sysprocesses WHERE blocked > 0) 
go

 检查锁表

select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName
from   sys.dm_tran_locks t where resource_type='OBJECT' order by spid asc;

查询导致死锁的sql语句

dbcc inputbuffer(spid);

解锁

declare @spid  int 
Set @spid  = 123--锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid  as varchar)
exec(@sql)

杀掉进程

kill spid

 

转载于:https://www.cnblogs.com/zhengyazhao/p/10917575.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值