我有一個長時間運行的查詢會話,我想找出它當前在 SQL Server 中運行的哪一行(存盤程序中的一段代碼)?
在活動用戶會話中,沒有可用的查詢計劃可供我查找在存盤程序中運行“select into”或“Ins??ert”的用戶行程。我試圖查看 sys.dm_exec_requests 以查看該活動會話是否有這樣的 linenum 列,但沒有。
謝謝你的幫助。
uj5u.com熱心網友回復:
sys.dm_exec_requests僅回傳sql_handle,您需要將其傳遞給以dm_exec_sql_text獲取文本。然后你可以使用一些計算來計算出運行陳述句的文本
SELECT
SUBSTRING(st.text, (r.statement_start_offset / 2) 1,
((CASE r.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE r.statement_end_offset
END - r.statement_start_offset) / 2) 1) AS statement_text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) st
WHERE r.session_id = @someSPID;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454764.html
標籤:sql服务器
上一篇:將行更改為二進制字串
