異常處理流程(不相容SQLServer2005)
以下 SQL相容 SQLServer2008R2, 但是不相容SQLServer2005
-
--查詢所有正在執行中的SQL,按照cpu耗時倒序排列
-
select top 10 (select top 1 text from sys.dm_exec_sql_text(dm_c.most_recent_sql_handle)) as sqltext
-
,dm_s.cpu_time
-
,dm_c.session_id
-
,*
-
from Sys.dm_exec_connections as dm_c
-
join Sys.dm_exec_sessions as dm_s on(dm_c.session_id = dm_s.session_id)
-
where 1=1 --and dm_s.login_name = 'TCScenery'
-
and dm_s.status = 'running'
- order by dm_s.cpu_time desc
-
--檢視sysprocesses中鎖及產生鎖的session的SQL資訊
-
WITH ProcessCTE(blocked) AS
-
(
-
SELECT blocked FROM sys.sysprocesses WHERE blocked>0
-
)
-
SELECT distinct a.*
-
FROM (
-
SELECT TEXT,AA.* FROM sys.sysprocesses AA
-
CROSS APPLY sys.dm_exec_sql_text(AA.sql_handle)
-
) a
-
JOIN ProcessCTE bucte WITH(NOLOCK)
-
ON bucte.blocked=a.spid
- ORDER BY a.blocked
-
--總耗CPU最多的前個SQL:
-
SELECT TOP 20
-
total_worker_time/1000 AS [總消耗CPU 時間(ms)],execution_count [執行次數],
-
qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 時間(ms)],
-
last_execution_time AS [最後一次執行時間],max_worker_time /1000 AS [最大執行時間(ms)],
-
SUBSTRING(qt.text,qs.statement_start_offset/2+1,
-
(CASE WHEN qs.statement_end_offset = -1
-
THEN DATALENGTH(qt.text)
-
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
-
AS [使用CPU的語法], qt.text [完整語法],
-
qt.dbid, dbname=db_name(qt.dbid),
-
qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
-
FROM sys.dm_exec_query_stats qs WITH(nolock)
-
CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
-
WHERE execution_count>1
- ORDER BY total_worker_time DESC
-
--平均耗CPU最多的前個SQL:
-
SELECT TOP 20
-
total_worker_time/1000 AS [總消耗CPU 時間(ms)],execution_count [執行次數],
-
qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 時間(ms)],
-
last_execution_time AS [最後一次執行時間],min_worker_time /1000 AS [最小執行時間(ms)],
-
max_worker_time /1000 AS [最大執行時間(ms)],
-
SUBSTRING(qt.text,qs.statement_start_offset/2+1,
-
(CASE WHEN qs.statement_end_offset = -1
-
THEN DATALENGTH(qt.text)
-
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
-
AS [使用CPU的語法], qt.text [完整語法],
-
qt.dbid, dbname=db_name(qt.dbid),
-
qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
-
FROM sys.dm_exec_query_stats qs WITH(nolock)
-
CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
-
WHERE execution_count>1
- ORDER BY (qs.total_worker_time/qs.execution_count/1000) DESC
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26435490/viewspace-1472724/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python異常處理的流程是什麼?Python
- 異常篇——異常處理
- 異常處理
- JSP 異常處理如何處理?JS
- 異常-throws的方式處理異常
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python
- Python異常處理Python
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- 異常的處理
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java
- 08、異常處理
- SpringMVC異常處理SpringMVC
- 異常處理機制(二)之異常處理與捕獲
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- NodeJS之異常處理NodeJS
- JAVA_異常處理Java
- React Native 異常處理React Native
- Spring Boot 異常處理Spring Boot
- PHP 核心 - 異常處理PHP
- GRpc異常處理FilterRPCFilter
- python異常捕捉處理Python
- 14. 異常處理
- 異常處理機制
- 異常處理方式throws
- 處理多個異常
- 異常處理全面解析
- Python Selenium異常處理Python