Pergunta

Estou usando o SQL Server 2012 e quero obter as consultas que estão demorando mais para serem executadas junto com as consultas que estão causando bloqueio no servidor.Quando olho para o servidor em busca de consultas em execução para identificar qualquer bloqueio, não encontro nenhuma consulta.

Eu configurei eventos estendidos e obtive apenas informações de alto nível.As tabelas que estão atingindo o tempo limite, mas preciso de informações que contem mais sobre as consultas que causaram os tempos limite.

Alguma sugestão???

Foi útil?

Solução

Você pode fazer uso do DMV sys.dm_exec_query_stats e sys.dm_exec_requests para analisar as consultas que consomem recursos junto com sua duração:

Use a consulta abaixo para capturar o mesmo:

-- Execute the query inside target database
 SELECT TOP 10
      qs.total_elapsed_time / qs.execution_count / 1000000.0 AS average_seconds,
      qs.total_elapsed_time / 1000000.0 AS total_seconds,
      qs.execution_count,
      SUBSTRING (qt.text,qs.statement_start_offset/2, 
      (CASE WHEN qs.statement_end_offset = -1 
      THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
      ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) AS individual_query,
      o.name AS object_name,
      DB_NAME(qt.dbid) AS database_name
FROM 
      sys.dm_exec_query_stats qs
      CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
      LEFT OUTER JOIN sys.objects o ON qt.objectid = o.object_id
WHERE 
      qt.dbid = DB_ID()
ORDER BY 
      average_seconds DESC;

Além disso, sugiro que se você estiver usando eventos estendidos, poderá capturá-los.Para obter mais informações sobre como configurar e usar o mesmo, leia este whitepaper de Jonathan Usando eventos estendidos do SQL Server 2008 o que deve fazer você seguir em frente aqui

Além disso, quando as consultas são executadas e todos os processos são executados em segundo plano e para verificar se o bloqueio está realmente disponível junto com alguma espera específica, sugiro que você use SP_WHOISACTIVE de Como usar sp_WhoIsActive para encontrar consultas lentas do SQL Server

Além disso, se preferir usar o Profiler, você pode rastrear e solucionar o mesmo, conforme explicado em Como identificar consultas de execução lenta com SQL Profiler

Licenciado em: CC-BY-SA com atribuição
Não afiliado a dba.stackexchange
scroll top