SQL Server进程、阻塞、锁相关查询

1.查询正在进行的SQL

--正在进行的SQL
SELECT [Spid] = session_Id, ecid, [Database] = DB_NAME(sp.dbid),
 [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, start_time
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) 
-- and Hostname = '主机名称'
and DB_NAME(sp.dbid) = '数据库名称'
-- and er.Status = 'running' 
------结束进程
--kill @spid --

2.查询语句执行情况

--查询语句执行情况
SELECT TOP 1000 t.hostname,
                t.loginame,
                percent_complete,
        [session_id] ,
        der.[request_id] ,
        [start_time] AS 'start_time' ,
        der.[status] AS 'status' ,
        [command] AS 'command' ,
        dest.[text] AS 'sql' ,
        DB_NAME([database_id]) AS 'database' ,
        [blocking_session_id] AS 'blocking_session_id' ,
        [wait_type] AS 'wait_type' ,
        [wait_time] AS 'wait_time' ,
        [wait_resource] AS 'wait_resource' ,
        [reads] AS 'reads' ,
        [writes] AS 'writes' ,
        [logical_reads] AS 'logical_reads' ,
        [row_count] AS 'row_count'
FROM    sys.[dm_exec_requests] AS der
        CROSS APPLY sys.[dm_exec_sql_text](der.[sql_handle]) AS dest
                left JOIN sys.sysprocesses t ON t.spid=der.session_id
WHERE   [session_id] > 50
AND DB_NAME(der.[database_id]) = '数据库名'
ORDER BY [cpu_time] DESC

3.查阻塞语句

--查阻塞语句
select text, * 
from sys.dm_exec_requests er 
cross apply sys.dm_exec_sql_text(er.sql_handle)

4.查阻塞语句

--查阻塞与锁
SELECT t1.resource_type AS [锁类型], DB_NAME(resource_database_id) AS [数据库名],
t1.resource_associated_entity_id AS [阻塞资源对象],t1.resource_description as [资源描述信息], t1.request_mode AS [请求的锁], 
t1.request_session_id AS [等待会话], t2.wait_duration_ms AS [等待时间],       
(SELECT [text] FROM sys.dm_exec_requests AS r WITH (NOLOCK)                      
	CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle]) 
    WHERE r.session_id = t1.request_session_id
) AS [等待会话执行的批SQL],
(SELECT SUBSTRING(qt.[text],r.statement_start_offset/2, 
		(CASE WHEN r.statement_end_offset = -1 
		THEN LEN(CONVERT(nvarchar(max), qt.[text])) * 2 
		ELSE r.statement_end_offset END )/2) 
	FROM sys.dm_exec_requests AS r WITH (NOLOCK)
	CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle]) AS qt
	WHERE r.session_id = t1.request_session_id
) AS [等待会话执行的SQL],                    
t2.blocking_session_id AS [阻塞会话],                                        
(SELECT [text] FROM sys.sysprocesses AS p                                       
	CROSS APPLY sys.dm_exec_sql_text(p.[sql_handle]) 
	WHERE p.spid = t2.blocking_session_id
) AS [阻塞会话执行的批SQL]
FROM sys.dm_tran_locks AS t1 WITH (NOLOCK)
INNER JOIN sys.dm_os_waiting_tasks AS t2 WITH (NOLOCK)
ON t1.lock_owner_address = t2.resource_address OPTION (RECOMPILE);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值