2011-07-27 54 views

回答

3

沒有

可以做到這一點的唯一方法是,如果一個監控進程設置了提前

監控數據庫,例如通過SQL事件探查器,會對性能產生影響,因此應該謹慎對待長時間使用此係統來應對實時系統。

監控這種活動的更好方法是使用來自調用代碼的日誌記錄。

2

嘗試以下:

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] 
FROM sys.dm_exec_query_stats AS deqs 
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest 
ORDER BY deqs.last_execution_time DESC 

http://blog.sqlauthority.com/2008/01/03/sql-server-2005-last-ran-query-recently-ran-query/

+0

感謝您的答覆。我在這個查詢中添加了一個WHERE子句來在我需要的時間之間進行過濾。它多次顯示我的存儲過程,但它顯示'CREATE PROCEDURE ...'而不是'EXEC dbo.ProcedureName ....'。 – Curt

+2

請注意,['sys.dm_exec_query_stats'](http://msdn.microsoft.com/zh-cn/library/ms189741.aspx)基於查詢計劃* cache *,因此可能不包括所有執行的SQL語句最舊和最新的行。 – Richard

+1

你在說關於查詢不存儲proc :-) SqlServer沒有跟蹤你需要什麼。你需要主動捕獲這個,最簡單的是啓動一個profiler –