[SQL]資料庫正在執行的指令與資訊

閱讀時間約 3 分鐘
平常在執行SP時,時常會遇到程式執行得特別慢,或已經跑到Time out了都還沒執行成功,SQL Server有提供各種監控的DMV(Dynamic Management View),可查詢資料庫中即時的運作資訊,也包括正在執行的完整指令。
正在執行指令
可以看到正在執行的的段落
   SELECT 
	   r.scheduler_id AS '排程器識別碼'
	  ,r.[status] AS '要求的狀態'
	  ,r.session_id AS 'SPID'
	  ,r.blocking_session_id AS 'BlkBy'
	  ,SUBSTRING(LTRIM(q.[text]),r.statement_start_offset / 2+1,
		   (CASE WHEN r.statement_end_offset = -1
			    THEN LEN(CONVERT(NVARCHAR(MAX), q.[text])) * 2
			    ELSE r.statement_end_offset
			    END - r.statement_start_offset) / 2
		      ) AS '正在執行的 T-SQL 命令'
	  ,r.cpu_time AS 'CPU Time(ms)'
	  ,r.start_time AS '開始時間'
	  ,r.total_elapsed_time AS '執行總時間'
	  ,r.reads AS '讀取數'
	  ,r.writes AS '寫入數'
	  ,r.logical_reads AS '邏輯讀取數'
	  ,q.[text] AS '完整的 T-SQL 指令碼'
	  ,d.[name] AS '資料庫名稱'
       FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS q
  LEFT JOIN sys.databases d 
         ON (r.database_id=d.database_id)
      WHERE r.session_id > 50 
	AND r.session_id <> @@SPID
   ORDER BY r.total_elapsed_time DESC
也可以使用sp_who2 這個系統預存程序,查看目前資料庫上的連線 Session、登入名稱、連線資料庫、裝置名稱,看是否有連線被咬住的狀況,不過Command欄位裡面只有一小句,看不到完整的部分。
執行sp_who2
在對DMV還不熟的情況下(沒背起來也無法複製時),還是習慣用sp_who2看,也比較快不用還要打一段語法,也可以直接KILL掉,只是就是看不到現在正在跑落落長程式中的哪一段(´・ω・`)
    留言0
    查看全部
    發表第一個留言支持創作者!
    從 Google News 追蹤更多 vocus 的最新精選內容