사용 :
SELECT TOP 10
qt.TEXT AS 'SP Name',
SUBSTRING(qt.text, qs.statement_start_offset/2, CASE WHEN (qs.statement_end_offset = -1) THEN LEN(qt.text) ELSE (qs.statement_end_offset - qs.statement_start_offset)/2 END) AS actual_query,
qs.execution_count AS 'Execution Count',
qs.total_worker_time/qs.execution_count AS 'AvgWorkerTime',
qs.total_worker_time AS 'TotalWorkerTime',
qs.total_physical_reads AS 'PhysicalReads',
qs.creation_time 'CreationTime',
qs.execution_count/DATEDIFF(Second, qs.creation_time, GETDATE()) AS 'Calls/Second'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.dbid = (SELECT dbid
FROM sys.sysdatabases
WHERE name = '[your database name]')
ORDER BY qs.total_physical_reads DESC
참조 : SQL SERVER – 2005 – Find Highest/Most Used Stored Procedure
또한'SUBSTRING 추출 할 수 있습니다 (텍스트/2의 경우 statement_start_offset 때 (statement_end_offset = -1) 다음 LEN (텍스트) 다른 (statement_end_offset-statement_start_offset)/2 엔드)가 SP 내부의 실제 쿼리에 대한' –
@ Remus : Added, thanks! –
는 문자열한다 (qt.text/2, CASE를 qs.statement_start_offset WHEN (qs.statement_end_offset = -1) THEN LEN (qt.text) ELSE (qs.statement_end_offset - qs.statement_start_offset)/2 END) actual_query AS, –