我們目前在對運行存儲過程的Web應用程序,其中一個被觸發每當特定項目的用戶搜索。不幸的是,我們有一天遇到了一個非常嚴重的問題,因爲它長期運行,因此導致數據庫性能很差。這最終給我們的應用程序帶來了很多問題。我發現了一個長時間運行的查詢通過運行該數據庫腳本導致了問題:如何控制長時間運行的查詢
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
where
sqltext.[Text] NOT LIKE '--''check%'
ORDER BY req.cpu_time DESC
所以我們做了修復,這是執行KILL [SESSION_ID],幾秒鐘我們的應用程序被打回後正常。現在,我們希望主動處理這種類型的問題,所以當我說控制時,我想知道Web應用程序是否有可能在一段時間或一段時間後優雅地終止此會話(不會導致後續問題),或者應該它是在SQL Server內部處理的?
如果有人仍然需要進一步澄清,請隨時發表評論。
你需要微調的那些效果不佳的查詢,那 – TheGameiswar
你在你的應用程序中使用連接超時的唯一選擇? – Vasanthan
也許試試這個:http://stackoverflow.com/a/4005428/5358389 – daniell89