• SQLSERVER 查询阻塞SQL以及锁


    查询阻塞SQL以及锁

    • 查阻塞语句
    --查阻塞语句
    select text, * from sys.dm_exec_requests   er cross apply  sys.dm_exec_sql_text(er.sql_handle)
    
    • 1
    • 2
    • 查阻塞与锁
    --查阻塞与锁
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 查询语句执行情况
    SELECT TOP 1000 t.hostname,
                    t.loginame,
                    percent_complete,
            [session_id] ,
            der.[request_id] ,
            [start_time] AS '开始时间' ,
            der.[status] AS '状态' ,
            [command] AS '命令' ,
            dest.[text] AS 'sql语句' ,
            DB_NAME([database_id]) AS '数据库名' ,
            [blocking_session_id] AS '正在阻塞其他会话的会话ID' ,
            [wait_type] AS '等待资源类型' ,
            [wait_time] AS '等待时间' ,
            [wait_resource] AS '等待的资源' ,
            [reads] AS '物理读次数' ,
            [writes] AS '写次数' ,
            [logical_reads] AS '逻辑读次数' ,
            [row_count] AS '返回结果行数',
                    t.hostname,
                    t.loginame
    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]) = 'gposdb'
    ORDER BY [cpu_time] DESC
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    matplotlib中图表常用设置(五)
    C++ 类和对象
    【数据结构与算法】第1章 绪论 算法的概念
    😊SpringBoot 整合 Elasticsearch (超详细).md
    机器学习 —— 计算评估指标
    springboot-mybatis实现增删改查(一)
    计算摄影——自动构图
    解析java数值类型数据混合运算
    45. 跳跃游戏 II
    C语言如何使⽤指针操作多维数组?
  • 原文地址:https://blog.csdn.net/qq_40615333/article/details/133923350