2011-01-25 35 views
1

試圖解決我們的服務器上的問題 - 一個非常昂貴的查詢使用了我們的很多CPU。SQL Server 2005 Express - 活動監視器 - 顯示細節爲空,我如何知道啓動過程的SQL語句是什麼?

當我使用活動監視器時,有時可以使用該過程的顯示詳細信息,它會顯示正在運行查詢的sql。但並非總是如此。

我現在可以看到這個過程,但我怎麼能告訴查詢文本是負責任的?如果我有sql,我可以識別源代碼,但目前我什麼都沒有!

回答

2

請嘗試使用以下查詢。

SELECT TOP 20 
    qs.sql_handle, 
    qs.execution_count, 
    qs.total_worker_time AS Total_CPU, 
    total_CPU_inSeconds = --Converted from microseconds 
     qs.total_worker_time/1000000, 
    average_CPU_inSeconds = --Converted from microseconds 
     (qs.total_worker_time/1000000)/qs.execution_count, 
    qs.total_elapsed_time, 
    total_elapsed_time_inSeconds = --Converted from microseconds 
     qs.total_elapsed_time/1000000, 
    st.text, 
    qp.query_plan 
FROM 
    sys.dm_exec_query_stats AS qs 
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st 
    CROSS apply sys.dm_exec_query_plan (qs.plan_handle) AS qp 
ORDER BY qs.total_worker_time DESC 

然後我可能會建議您讓自己的書面和亞當Machanic的自由禮貌共享真棒sp_WhoIsActive存儲過程的副本。您可以使用該過程來識別所有當前正在運行的查詢,包括大量相關信息,例如CPU使用量,IO,執行計劃,查詢文本,阻止等。

+0

感謝,adam機械師查詢鏈接是有用的。然而,我確實找到了一種更簡潔的方式來獲取我之後的信息:DBCC INPUTBUFFER()! – gb2d 2011-01-25 11:08:48

相關問題