Sql-Server

什麼樣的 exec 請求沒有 sql 句柄?(sys.dm_exec_requests)

  • May 15, 2020

我製作了一個針對 SQL Server 2012 的查詢,如下所示:

SELECT r.session_id, r.sql_handle, t.text -- more details excluded for brevity
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t

現在,這很有幫助地向我展示了我的伺服器上正在執行的內容——並且使用這樣的查詢,我已經能夠找到消耗更多資源的東西。

然而,它困擾我的是(因為交叉應用,我相信)sys.dm_exec_requests沒有 sql_handle 值的條目不包括在內。我還擔心有時返回的請求數量(通常大約十幾個)低於我基於負載的預期。

我知道(或認為我知道)這是我能看到的時間視圖中最有限的快照,SQL 一次只能做這麼多事情,但我也想知道,我的查詢缺少什麼來向我展示“什麼正在使用我的伺服器”?

目前查詢的問題在於,您只是在尋找當時可能正在執行的查詢。要全面了解您的伺服器狀態,您可以嘗試執行 SQL Server Profiler 或檢查與內置儲存過程(如sp_who. 與使用已由其他 DBA 開發和測試的儲存過程相比,這些方法更加複雜和耗時。

我建議您安裝Adam Machanic的免費儲存過程,名為sp_whoisactive. 最新版本應該足以幫助您深入了解伺服器上的活動。此過程還將為您提供比編寫引用一個或兩個 DMV 的查詢更詳細的資訊。從文件中,sp_whoisactive使用 15 個 DMV。

引用自:https://dba.stackexchange.com/questions/136778