異常處理流程(不相容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
- 系統故障解析:Windows異常處理流程(轉)Windows
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理
- oracle異常處理Oracle
- PowerShell 異常處理
- plsql異常處理SQL
- Swift 異常處理Swift
- JS異常處理JS
- app異常處理APP
- Oracle 處理異常Oracle
- MySQL異常處理MySql
- 異常處理 (轉)
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- 異常的處理
- Java 異常處理Java
- 異常處理機制(二)之異常處理與捕獲
- JSP 異常處理如何處理?JS
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- 關於SQLServer2005的學習筆記——異常捕獲及處理SQLServer筆記
- windows核心程式設計---未處理異常,向量化異常處理與C++異常Windows程式設計C++
- Python異常處理Python
- PHP 核心 - 異常處理PHP
- Python——異常處理Python
- JAVA_異常處理Java
- SpringMVC異常處理SpringMVC