저장 프로 시저 사용 추적


19

SQL Server 프로파일 러를 사용하는 것 외에도 사용중인 저장 프로 시저 또는 적어도 마지막으로 실행 된 시간을 추적하는 방법이 있습니까?


4
항상 계획 캐시를 볼 수 있습니다. 메타 데이터가 빠르게 커지고 비용이 많이 들기 때문에 SQL Server는이 내용을 영원히 추적하지 않습니다.
JNK

답변:


17

계획 캐시에서 스토어드 프로 시저 사용법을 알 수 있습니다. 이 쿼리를 예로 들어 보겠습니다.

select
    db_name(st.dbid) as database_name,
    object_name(st.objectid) as name,
    p.size_in_bytes / 1024 as size_in_kb,
    p.usecounts,
    st.text
from sys.dm_exec_cached_plans p
cross apply sys.dm_exec_sql_text(p.plan_handle) st
where p.objtype = 'proc'
and st.dbid = db_id('SomeDatabase')
order by p.usecounts desc

이것에 usecounts관련된 캐시 된 저장 프로 시저 가 제공 됩니다 SomeDB.

참고 : 계획 캐시에는 실행 계획이 포함되어 있습니다. 이러한 계획의 유지에는 여러 가지 요소가 관련됩니다. 이것이 사용되는 내용과 빈도에 대한 좋은 아이디어를 제공하는 반면, 저장 프로 시저의 총 실행 횟수와 실행 빈도는 아닙니다.

계획 캐시에 대한 BOL 참조


4
이것은 최근에 sp가 상당히 최근에 실행되었음을 나타내며 여기에없는 프로세스에 대한 정보는 제공하지 않습니다. 분기 별 보고서 뒤에있는 procs와 같은 것은 드물게 실행되지만 사용되고 있습니다. 기본적으로 이것은 DB에 부딪힌 응용 프로그램을 조사 할 목록을 제공합니다.
HLGEM

1
@HLGEM 정확하게. 나는 내 대답에서 그 요점을 분명히하려고 노력했다.
Thomas Stringer

특정 날짜 시간 범위 에서이 작업을 수행 할 수 있습니까? (예 : 마지막 날 / 월 등)?
Jose Parra

이 쿼리는 변경되어 이후에 실행되지 않은 저장 프로 시저에 대한 행을 반환하지 않습니다.
Axel2D

10

last_execution_time모든 저장 프로 시저에 대한 정보가 포함되어있을뿐만 아니라이 정보도 볼 수 있습니다 .

    SELECT DB_NAME(database_id)
    ,OBJECT_NAME(object_id,database_id)
    ,cached_time
    ,last_execution_time
    ,execution_count
FROM sys.dm_exec_procedure_stats

이도에주의해야합니다. 이 통계는 마지막 데이터베이스 실행 이후에만 유지됩니다. 하루에 한 번 테이블에 보관할 작업을 작성 하느라 바쁩니다.
earthling42

@ earthling42, 매일 테이블에 보관하는 작업을 작성하셨습니까?
Alex Chung

@Alex Chung-불행히도 결코 그 주변에 가지 못했습니다. 이 게시물이 나온 직후 비 MS-SQL 프로젝트로 이동했습니다. 어려운 일이되어서는 안됩니까? 관심이 있으시면 기꺼이 해결해 드리겠습니다.
earthling42
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.