Sie sollten auch Plancache überprüfen. Von dort aus können Sie die durchschnittliche Dauer pro Anweisung berechnen, und wenn Sie nicht mit vielen verschiedenen Anweisungen in die Tabelle einfügen (und Ihre Abfragen sind parametrisiert), sollten Sie ziemlich gute Ergebnisse erzielen.
Hier ist ein Beispiel, wie die DMVs abfragen:
select top 100
SUBSTRING(t.text, (s.statement_start_offset/2)+1,
((CASE s.statement_end_offset
WHEN -1 THEN DATALENGTH(t.text)
ELSE s.statement_end_offset
END - s.statement_start_offset)/2) + 1) as statement_text,
t.text,
s.total_logical_reads, s.total_logical_reads/s.execution_count as avg_logical_reads,
s.total_worker_time, s.total_worker_time/s.execution_count as avg_worker_time,
s.execution_count,
creation_time,
last_execution_time
--,cast(p.query_plan as xml) as query_plan
from sys.dm_exec_query_stats s
cross apply sys.dm_exec_sql_text (sql_handle) t
--cross apply sys.dm_exec_text_query_plan (plan_handle, statement_start_offset, statement_end_offset) p
order by s.execution_count desc
Der Teil für Abfragepläne ist als Kommentar gekennzeichnet.
run sql Profiler – Gabor
Sie haben die [dynamische Management Ansichten und Funktionen] (https://msdn.microsoft.com/en-us/library/ms188754.aspx). Die meisten der hier erfassten Statistiken gehen jedoch jedes Mal verloren, wenn der SQL Server neu gestartet wird. Soweit ich weiß, protokolliert SQL Server dieses Zeug nicht aus der Box. Wenn Sie nur nachdenken, haben Sie vielleicht mehr Glück, wenn Sie diese Frage an [Stack DBA] (http://dba.stackexchange.com/) weiterleiten. –