terça-feira, 5 de setembro de 2017

SQL SERVER 2016 - Uma nova alternativa para DBCC INPUTBUFFER - sys.dm_exec_input_buffer

DBCC INPUTBUFFER foi um dos comandos dbcc mais populares para monitorar e identificar a última execução enviada de um client para uma instância do Microsoft SQL Server. Todos usamos isso há bastante tempo. No entanto, este comando DBCC sempre limitou-se aos poucos detalhes de informação. No SQL Server 2016, teremos disponivel uma nova Função de Gerenciamento Dinâmico (DMV) sys.dm_exec_input_buffer, que fornece muitos detalhes adicionais.
Anteriormente, toda vez que eu costumava executar o DBCC INPUTBUFFER, eu sempre senti que deveria ter alguns detalhes adicionais, juntamente com este, como quantas linhas as consultas são processadas ou quantos recursos eles estão consumindo. Nesta nova versão, temos muitas informações úteis junto com IDs de sessão e detalhes da execução de consultas.
Outra limitação do DBCC INPUTBUFFER foi que ele precisava ser identificado em um unico session_id e não havia nenhuma maneira em que pudéssemos juntar isso com o DMV atual para executá-lo para diversos IDs de sessão. Essa limitação também desaparece quando a nova função sys.dm_exec_input_buffer agora pode ser associada a sys.dm_exec_sessions.
Testamos executar a seguir a consulta e observar seu retorno.
1
2
3
4
5
6
7
SELECT es.session_id, ib.event_info, status, cpu_time,memory_usage, logical_reads, writes, row_count, total_elapsed_time, login_time,last_request_start_time, last_request_end_time,  host_name, program_name, login_name, open_transaction_count
FROM sys.dm_exec_sessions AS es
CROSS APPLY sys.dm_exec_input_buffer(es.session_id, NULL) AS ib
WHERE es.session_id > 50
Este é o retorno do conjunto da consulta acima:


referências:  Pinal Dave (blog.sqlauthority.com) 

Nenhum comentário:

Postar um comentário