2013-02-26 4 views
0

이 쿼리에서는 SQL Server에서 상위 10 개의 느린 쿼리가 표시됩니다.Sql Server 2012에서 쿼리의 마지막 실행 시간을 받으십시오.

SELECT TOP 20 
    SUBSTRING(qt.text, (qs.statement_start_offset/2)+1, 
    ((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.text) 
            ELSE qs.statement_end_offset 
     END - qs.statement_start_offset)/2)+1), 
    qs.execution_count, 
    qs.total_logical_reads, qs.last_logical_reads, 
    qs.min_logical_reads, qs.max_logical_reads, 
    qs.total_elapsed_time, qs.last_elapsed_time, 
    qs.min_elapsed_time, qs.max_elapsed_time, 
    qs.last_execution_time, 
    qp.query_plan 
FROM 
    sys.dm_exec_query_stats qs 
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) qt 
CROSS APPLY 
    sys.dm_exec_query_plan(qs.plan_handle) qp 
WHERE 
    qt.encrypted = 0 
ORDER BY 
    qs.total_logical_reads DESC 

내가 원하는 것은 지난 10 번의 실행 시간마다 각 쿼리를 찾는 것입니다. 또는 하루 평균 실행 기간이 나를 기쁘게합니다.

답변

0

특정 기간에 데이터베이스 프로 시저 실행의 스냅 샷을 생성 한 다음 비교할 수 있습니다. 모든 스냅 샷을 테이블에 삽입하려면 sql을 사용하십시오.

SELECT 
     getDAte() as SnapshotDate, 
     s.database_id, 
     s.[plan_handle], 
     s.[object_id], 
     s.last_execution_time, 
     s.execution_count, 
     s.total_worker_time, 
     s.last_worker_time, 
     s.min_worker_time, 
     s.max_worker_time, 
     s.total_physical_reads, 
     s.last_physical_reads, 
     s.min_physical_reads, 
     s.max_physical_reads, 
     s.total_logical_writes, 
     s.last_logical_writes, 
     s.min_logical_writes, 
     s.max_logical_writes, 
     s.total_logical_reads, 
     s.last_logical_reads, 
     s.min_logical_reads, 
     s.max_logical_reads, 
     s.total_elapsed_time, 
     s.last_elapsed_time, 
     s.min_elapsed_time, 
     s.max_elapsed_time 

FROM sys.dm_exec_procedure_stats AS s 
WHERE s.database_id NOT IN 
          (
          DB_ID('master'), 
          DB_ID(N'tempdb'), 
          DB_ID(N'model'), DB_ID(N'msdb'), 
          32767 -- RESOURCE db 

         ) ; 
관련 문제