2012-05-22 26 views
0

我有一個應用程序,可讓用戶一次搜索數百萬條記錄。當搜索沒有及時返回時,用戶退出應用程序,重新登錄並重新提交搜索。在sql中運行重複查詢時檢測到

SQL服務器不知道用戶已註銷,並且它不應該仍在運行搜索,所以我最終將同時執行許多相同的查詢。現在我只是運行一個腳本,告訴我已經運行了5分鐘或更長時間(請注意,這些搜索是激烈的,可以運行幾個小時),如何檢測重複查詢何時運行?

感謝,

菲利普

+0

退出應用程序並重新登錄?爲什麼不給他們提供停止或取消按鈕?另外,你能定義什麼是「重複查詢」?如果我正在搜索「Suzie」,Suzie正在尋找「Aaron」是否是重複的? –

+0

活動監視器。 –

+0

或sp_whoisactive。 http://sqlblog.com/blogs/adam_machanic/archive/2011/04/27/who-is-active-v11-00-a-month-of-activity-monitoring-part-27-of-30.aspx –

回答

1

您可以運行SQL的該位並檢查文本值:

SELECT sqltext.TEXT, 
req.session_id, 
req.status, 
req.command, 
req.cpu_time, 
req.total_elapsed_time 
FROM sys.dm_exec_requests req 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 

感謝Sql Authority

0

爲@kell mentioned,與查詢你可以找到運行時間最長的查詢,雖然它有一些問題,但如果你讀this information你也可以修復已知的問題。
順便說一句,我想你爲什麼不離開這個工作的SQL服務器。 Sql服務器具有查找重複,優化和緩存的內部功能。如果你緩存了相同的SQL查詢的結果,它會好得多。
微軟發佈了sql-server-2008緩存的最佳實踐文章。 Read it