微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLServer 2008数据库查看死锁、堵塞的SQL语句

死锁和堵塞一直是性能测试执行中关注的重点。

下面是我整理的监控sql server数据库,在性能测试过程中是否出现死锁、堵塞的sql语句,还算比较准备,留下来备用。

--每秒死锁数量

SELECT  *
FROM    sys.dm_os_performance_counters
WHERE   counter_name LIKE 'Number of Deadlocksc%';

--查询当前阻塞

WITH    CTE_SID ( BSID,SID,sql_handle )
          AS ( SELECT   blocking_session_id,session_id,sql_handle
               FROM     sys.dm_exec_requests
               WHERE    blocking_session_id <> 0
               UNION ALL
               SELECT   A.blocking_session_id,A.session_id,A.sql_handle
               FROM     sys.dm_exec_requests A
                        JOIN CTE_SID B ON A.SESSION_ID = B.BSID
             )
    SELECT  C.BSID,C.SID,S.login_name,S.host_name,S.status,S.cpu_time,S.memory_usage,S.last_request_start_time,S.last_request_end_time,S.logical_reads,S.row_count,q.text
    FROM    CTE_SID C 
            JOIN sys.dm_exec_sessions S ON C.sid = s.session_id
            CROSS APPLY sys.dm_exec_sql_text(C.sql_handle) Q
    ORDER BY sid
在压力测试过程中,不间断的按F5键执行上面的sql语句,如果出现死锁或者堵塞现象,就会在执行结果中罗列出来。如果每次连续执行sql,都有死锁或者堵塞出现,说明死锁或者堵塞的比较严重。

附:

--显示所有活动进程:
use master
go
exec sp_who 'active'
go

--显示会话ID标识的特定进程

use master
go
exec sp_who '10'
go

--删除阻塞的进程
use master
go
kill 00
go
转载:http://www.cnblogs.com/zhuque/archive/2012/11/08/2763343.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐