Questão nº 60
Questão de Administração de Banco de Dados · FGV MPAL 2018 (nº 60)
O administrador de uma instalação MS SQL Server detectou a existência de uma transação em atividade no sistema, cujo processamento está muito demorado.
Assinale a opção que apresenta a consulta que fornece os dados adequados para que a transação seja corretamente identificada e o comando kill executado com segurança.
- A```
select x.session_id, host_name, program_name,
nt_domain, login_name, connect_time,
last_request_end_time
from sys.dm_exec_sessions x
join sys.dm_clr_tasks y
ON x.session_id = y.session_id;
``` - B```
select x.session_id, host_name, program_name,
nt_domain, login_name, connect_time,
last_request_end_time
from sys.dm_exec_background_job_queue_stats x
join sys.dm_io_pending_io_requests y
ON x.session_id = y.session_id;
``` - C```
select x.session_id, host_name, program_name,
nt_domain, login_name, connect_time,
last_request_end_time
from sys.dm_exec_sessions x
join sys.dm_exec_background_job_queue_stats y
ON x.session_id = y.session_id;
``` - D```
select x.session_id, host_name, program_name,
nt_domain, login_name, connect_time,
last_request_end_time
from sys.dm_exec_sessions x
join sys.dm_exec_connections y
ON x.session_id = y.session_id;
``` (alternativa correta) - E```
select x.session_id, host_name, program_name,
nt_domain, login_name, connect_time,
last_request_end_time
from sys.dm_audit_actions AS x
join sys.dm_io_pending_io_requests
ON x.session_id = y.session_id;
```
Resposta comentada
Gabarito Alternativa D
Para identificar uma transação demorada no SQL Server e poder finalizá-la com segurança, precisamos de informações sobre a sessão que a está executando. As DMVs (Dynamic Management Views) `sys.dm_exec_sessions` e `sys.dm_exec_connections` são as principais fontes para obter esses dados.
(A) Incorreta: Esta consulta une `sys.dm_exec_sessions` com `sys.dm_clr_tasks`. `sys.dm_clr_tasks` fornece informações sobre tarefas CLR (Common Language Runtime), que são um tipo específico de execução. A maioria das transações demoradas não são CLR, então essa consulta falharia em identificar a maioria das transações e não é adequada para um monitoramento geral.
(B) Incorreta: Esta consulta tenta unir `sys.dm_exec_background_job_queue_stats` com `sys.dm_io_pending_io_requests`. Ambas as DMVs não contêm a coluna `session_id` de forma que possa ser unida diretamente com sessões de usuário para identificar transações. `sys.dm_exec_background_job_queue_stats` é para estatísticas de fila de jobs em segundo plano, e `sys.dm_io_pending_io_requests` é para requisições de I/O pendentes de baixo nível, não sendo úteis para identificar sessões de usuário.
(C) Incorreta: Esta consulta une `sys.dm_exec_sessions` com `sys.dm_exec_background_job_queue_stats`. A DMV `sys.dm_exec_background_job_queue_stats` não possui a coluna `session_id` que se relaciona diretamente com as sessões de usuário em `sys.dm_exec_sessions`, tornando a condição de `JOIN` inválida para o propósito de identificar transações de usuário.
(D) Correta: Esta é a opção correta. A consulta une `sys.dm_exec_sessions` (que contém a maioria das informações desejadas, como `session_id`, `host_name`, `program_name`, `login_name`, `connect_time`, `last_request_end_time`) com `sys.dm_exec_connections` através do `session_id`. `sys.dm_exec_sessions` fornece detalhes sobre as sessões ativas, e `sys.dm_exec_connections` fornece informações sobre as conexões de rede associadas a essas sessões. Juntas, elas oferecem uma visão completa e robusta para identificar uma transação, seu usuário, aplicação e origem, permitindo a execução segura do comando `KILL` se necessário.
(E) Incorreta: Esta consulta tenta unir `sys.dm_audit_actions` com `sys.dm_io_pending_io_requests`. Nenhuma dessas DMVs possui a coluna `session_id` de forma que possa ser unida para identificar sessões de usuário ativas. `sys.dm_audit_actions` é para informações de auditoria, e `sys.dm_io_pending_io_requests` é para I/O pendente, não sendo apropriadas para o monitoramento de transações.
Fonte: FGV MPAL 2018 Analista do Ministério Público - Administrador de Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.