프로세스 ID, 프로세스 이름, 로그인 시간, 사용자, 시작 시간 및 기간으로 장기 실행 쿼리를 찾으려면 어떻게합니까?


23

누구든지 장기 실행 쿼리에 대해 아래에서 주어진 세부 정보를 찾도록 도와 줄 수 있습니까? ProcessID, 프로세스 이름, 데이터베이스, 호스트, 사용자, 프로세스 로그인 시간, 쿼리 시작 시간 및 쿼리 기간

이 데이터를 제공하는 쿼리 또는 SP를 찾고 있습니다.

답변:


38

주석으로, 가장 좋은 도구의 주위는 sp_whoIsActive 에 의해 아담 Machanic . 스크립트를 시작하는 순간에 실행중인 것을 확인하기 위해 여러 가지 방법으로 사용하거나 느린 쿼리와 같이 특정 작업을 모니터링하기 위해 루프에서 실행할 수 있습니다.

루프에서 실행하려면 여기를 살펴보십시오. 루프에서 sp_whoisactive를 사용하여 활동을 기록하는 방법 느린 쿼리를 검색 하려면 sp_WhoIsActive를 사용하여 느린 SQL Server 쿼리를 찾는 방법

DMV를 직접 사용하여 가장 느린 쿼리를 얻고 거기에서 조치를 취할 수 있습니다. Glenn Berry의 진단 쿼리를 확인하십시오 .

마지막으로이 쿼리를 사용하여 가장 많은 시간이 소요되는 쿼리를 찾을 수 있습니다. dm_exec_query_stats 를 사용하여 더 많은 데이터를 추가하거나 다른 데이터와 결합하여 더 많은 정보를 얻을 수 있습니다. 서버가 다시 시작될 때마다 dmv가 플러시되고 새로 고쳐집니다.

SELECT  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
         ((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
          ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;

편집하다

이미 새로운 옵션 인 First Reponder Kit가 있습니다. BrentOzar 팀이 MIT 라이센스 에 따라 무료로 제공하는 스크립트 세트 로, OP에서 요청한 스크립트를 포함하여 다양한 작업에 도움이됩니다. 이 경우에는 주로 sp_BlitzFirstsp_BlitzWho 스크립트입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.