누구든지 장기 실행 쿼리에 대해 아래에서 주어진 세부 정보를 찾도록 도와 줄 수 있습니까? ProcessID, 프로세스 이름, 데이터베이스, 호스트, 사용자, 프로세스 로그인 시간, 쿼리 시작 시간 및 쿼리 기간
이 데이터를 제공하는 쿼리 또는 SP를 찾고 있습니다.
누구든지 장기 실행 쿼리에 대해 아래에서 주어진 세부 정보를 찾도록 도와 줄 수 있습니까? ProcessID, 프로세스 이름, 데이터베이스, 호스트, 사용자, 프로세스 로그인 시간, 쿼리 시작 시간 및 쿼리 기간
이 데이터를 제공하는 쿼리 또는 SP를 찾고 있습니다.
답변:
주석으로, 가장 좋은 도구의 주위는 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_BlitzFirst 및 sp_BlitzWho 스크립트입니다.
sp_whoisactive를 적극 권장 합니다 . 타사 SP이지만 위에 나열된 모든 내용과 그 이상을 알려줄 수 있습니다. 당신의 무기고에 놀라운 도구입니다.