日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL Server通过动态视图里查找阻塞超过30秒的会话

發布時間:2024/9/27 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Server通过动态视图里查找阻塞超过30秒的会话 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL Server通過動態視圖里查找阻塞的會話

簡介

對于阻塞我們可以通過動態視圖dm_exec_requests、dm_tran_locks等關聯通過構建遞歸式樹形結構來查找出阻塞超過30秒的會話。

阻塞查詢

WITH Blocked_Sessions AS (-- 找到所有阻塞的會話SELECT sys.dm_exec_requests.blocking_session_id AS lead_session_id,sys.dm_exec_requests.blocking_session_id AS blocking_session_id , 0 CntFROM sys.dm_exec_requestsWHERE blocking_session_id <> 0AND blocking_session_id NOT IN (SELECT session_idFROM sys.dm_exec_requestsWHERE sys.dm_exec_requests.blocking_session_id <> 0)UNION ALL-- 遍歷所有的會話(構建樹型關系)SELECT Blocked_Sessions.lead_session_id, sys.dm_exec_requests.session_id, 1 CntFROM sys.dm_exec_requestsJOIN Blocked_SessionsON Blocked_Sessions.blocking_session_id = sys.dm_exec_requests.blocking_session_id ),Blocked AS (SELECT lead_session_id, SUM(Cnt) AS sessions_blockedFROM Blocked_SessionsGROUP BY lead_session_id) SELECT Blocked.*, DATEDIFF(s, Sess.last_request_start_time, getdate()) seconds_blocking,ISNULL(Req.status,'sleeping') [status], SqlText.text [sql_text],STUFF((SELECT DISTINCT ISNULL(', ' + db.name,'')FROM sys.databases dbJOIN sys.dm_tran_locks lcksON db.database_id = lcks.resource_database_idWHERE lcks.request_session_id = Sess.session_idORDER BY ISNULL(', ' + db.name,'')FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,2,'') AS database_list, Conn.client_net_address, Sess.login_name FROM sys.dm_exec_connections Conn LEFT OUTER JOIN sys.dm_exec_sessions SessON Conn.session_id = Sess.session_id JOIN BlockedON Blocked.lead_session_id = Sess.session_id CROSS APPLY sys.dm_exec_sql_text(Conn.most_recent_sql_handle) SqlText LEFT JOIN sys.dm_exec_requests ReqON Req.session_id = Sess.session_id WHERE Blocked.sessions_blocked >= 1 -- 過濾阻塞超過30秒的記錄AND DATEDIFF(s, Sess.last_request_start_time, getdate()) > 30;

總結

以上是生活随笔為你收集整理的SQL Server通过动态视图里查找阻塞超过30秒的会话的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。