Estimando o tempo final dos jobs no SQL Server

Olá pessoal, como têm indo a semana? Antes de começar a escrever quero que possam refletir sobre a seguinte mensagem: “O conhecimento não é pra ser guardado a sete chaves e sim pra ser compartilhado, dividido, pois conhecimento guardado é igual dinheiro num cofre, perde o valor e não rende nada.”

Essa senana quero falar rapidinho sobre uma dica que costumo usar as vezes nos ambientes que administro. Quem nunca se perguntou ou foi perguntado: “Em quanto tempo conclui o job que mandou rodar?”. E ai o que você faz? Com o script abaixo será possível programar e informar aos usuários quando a tarefa em execução será concluída. Ressaltando mais uma vez sobre a importância da leitura do livro DMVs SQL Server em Ação.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT r.percent_complete
, DATEDIFF(MINUTE, start_time, GETDATE()) AS Age
, DATEADD(MINUTE, DATEDIFF(MINUTE, start_time, GETDATE()) /
percent_complete * 100, start_time) AS EstimatedEndTime
, t.Text AS ParentQuery
, SUBSTRING (t.text,(r.statement_start_offset/2) + 1,
((CASE WHEN r.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), t.text)) * 2
ELSE r.statement_end_offset
END – r.statement_start_offset)/2) + 1) AS IndividualQuery
, start_time
, DB_NAME(Database_Id) AS DatabaseName
, Status
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(sql_handle) t
WHERE session_id > 50
AND percent_complete > 0
ORDER BY percent_complete DESC

 

Percebam a junção da DMV e DMF, pois é através delas que encontramos informações suficientes para determinar o término dos jobs administrativos que rodamos em nosso ambiente. Vou explicitar apenas o conceito da sys.dm_exec_requests, pois a sys.dm_exec_sql_text foi adicionada no quadro do artigo anterior. Caso queira dar uma olhada Exibindo as últimas consultas SQL em execução.

DMV Descrição
sys.dm_exec_requests

Contém detalhes de pedidos em execução no SQL Server.

Um exemplo abaixo mostra o que a consulta gera como resultado.

Sem título

As colunas apresentam informações sobre o percentual decorrido do job, o tempo em minutos de quanto o trabalho foi executado, o tempo final estimado, a instrução executado no job, o horário de ínicio e a base de dados envolvida.

Bem, por hoje acho que é só. Espero que o script possa contribuir no dia a dia dos profissionais mais experientes e iniciantes.

Abraços, até a próxima!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s