2012-05-26 58 views
11

是否有程序或SQL查詢,我可以找到哪些SQL查詢正在SQL Server 2012上運行?我認爲在早期版本的SQL Server中有一個工具可以顯示實際查詢內容或存儲過程名稱?目前在SQL Server中運行查詢

+1

SQL事件探查也就是說,不是嗎? :) –

回答

4

該工具被稱爲SQL Server Profiler,它仍然是標準工具集的一部分。

+0

「SQL Server Profiler」在哪裏?在我的MS SQL Server 2012中沒有'Performance Tools'文件夾。我沒有看到任何其他工具。我如何安裝這些工具。我以爲一切都安裝好了。 Profiler仍然在SQL Server 2012中?在哪裏安裝這些工具? – iefpw

+0

使用非快速版本時,它隨附管理工具選項;快遞版本不包括Profiler – SqlACID

3

有這一點,從SQL Server DMV的行動中書:

輸出顯示SPID(進程標識符) ecid(這類似於同一個spid中的線程,對於識別並行運行的查詢很有用),運行SQL的用戶,狀態(SQL是否正在運行或等待),等待狀態(爲什麼它正在等待) ,主機名,域名和開始時間(用於確定批處理運行的時間)。

好的部分是查詢和父查詢。例如,它顯示了一個存儲過程作爲父進程,以及正在運行的存儲過程中的查詢。這對我來說非常方便。我希望這可以幫助別人。

USE master 
GO 
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
SELECT 
er.session_Id AS [Spid] 
, sp.ecid 
, er.start_time 
, DATEDIFF(SS,er.start_time,GETDATE()) as [Age Seconds] 
, sp.nt_username 
, er.status 
, er.wait_type 
, SUBSTRING (qt.text, (er.statement_start_offset/2) + 1, 
((CASE WHEN er.statement_end_offset = -1 
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
ELSE er.statement_end_offset 
END - er.statement_start_offset)/2) + 1) AS [Individual Query] 
, qt.text AS [Parent Query] 
, sp.program_name 
, sp.Hostname 
, sp.nt_domain 


FROM sys.dm_exec_requests er 
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid 
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt 
WHERE session_Id > 50 
AND session_Id NOT IN (@@SPID) 
ORDER BY session_Id, ecid 
14

我用下面的查詢

SELECT SPID  = er.session_id 
    ,STATUS   = ses.STATUS 
    ,[Login]  = ses.login_name 
    ,Host   = ses.host_name 
    ,BlkBy   = er.blocking_session_id 
    ,DBName   = DB_Name(er.database_id) 
    ,CommandType = er.command 
    ,ObjectName  = OBJECT_NAME(st.objectid) 
    ,CPUTime  = er.cpu_time 
    ,StartTime  = er.start_time 
    ,TimeElapsed = CAST(GETDATE() - er.start_time AS TIME) 
    ,SQLStatement = st.text 
FROM sys.dm_exec_requests er 
    OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st 
    LEFT JOIN sys.dm_exec_sessions ses 
    ON ses.session_id = er.session_id 
LEFT JOIN sys.dm_exec_connections con 
    ON con.session_id = ses.session_id 
WHERE st.text IS NOT NULL 
+2

我發現這比其他查詢顯示正在運行的作業更有幫助。這一個顯示主機和登錄,這很好,謝謝! – russds

相關問題