Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Azure SQL Database
AzureSQL Managed Instance
SQL database in Microsoft Fabric
Retorna o plano de execução de consulta para solicitações em voo. Use esta DMV para recuperar o XML do showplan com estatísticas transitórias.
Sintaxe
sys.dm_exec_query_statistics_xml(session_id)
Argumentos
session_id
O ID da sessão que executa o lote a ser pesquisado. session_id é smallint. session_id podem ser obtidos dos seguintes objetos de gerenciamento dinâmico:
Tabela retornada
| Nome da Coluna | Tipo de dados | Descrição |
|---|---|---|
session_id |
smallint | ID da sessão. Não anulável. |
request_id |
int | ID do pedido. Não anulável. |
sql_handle |
varbinary(64) | Um token que identifica exclusivamente o lote ou o procedimento armazenado do qual a consulta faz parte. Poder ser nulo. |
plan_handle |
varbinary(64) | Um token que identifica exclusivamente um plano de execução de consulta para um lote que está sendo executado no momento. Poder ser nulo. |
query_plan |
xml | Contém a representação do Showplan em tempo de execução do plano de execução de consulta especificado com plan_handle contendo estatísticas parciais. O Showplan está em formato XML. Um plano é gerado para cada lote que contém, por exemplo, instruções Transact-SQL ad hoc, chamadas de procedimento armazenado e chamadas de função definidas pelo usuário. Poder ser nulo. |
Limitações
Devido a uma possível violação de acesso aleatório (AV) durante a execução de um procedimento armazenado de monitoramento com o sys.dm_exec_query_statistics_xml DMV, o valor <ParameterList> do atributo ParameterRuntimeValue Showplan XML foi removido no SQL Server 2017 (14.x) 26 e no SQL Server 2019 (15.x) 12. Esse valor pode ser útil ao solucionar problemas de procedimentos armazenados de longa execução. Você pode reativar esse valor no SQL Server 2017 (14.x) 31, SQL Server 2019 (15.x) 19 e versões posteriores, usando o sinalizador de rastreamento 2446. Esse sinalizador de rastreamento permite a coleta do valor do parâmetro de tempo de execução ao custo da introdução de sobrecarga extra.
Atenção
O sinalizador de rastreamento 2446 não deve ser habilitado continuamente em um ambiente de produção, mas apenas para fins de solução de problemas por tempo limitado. O uso desse sinalizador de rastreamento introduz uma sobrecarga de CPU e memória extra e possivelmente significativa, pois cria um fragmento XML do Showplan com informações de parâmetros de tempo de execução, independentemente de o sys.dm_exec_query_statistics_xml DMV ser chamado ou não.
No SQL Server 2022 (16.x), no Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure, você pode realizar a mesma funcionalidade no nível do banco de dados usando a FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION opção em ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).
Observações
Esta função do sistema está disponível a partir do SQL Server 2016 (13.x) com Service Pack 1. Para obter mais informações, consulte KB 3190871.
Esta função do sistema opera em infraestrutura de perfilagem de estatísticas de execução de consulta padrão e leve. Para obter mais informações, consulte a infraestrutura de perfilamento de consultas .
Sob as seguintes condições, nenhuma saída do Showplan é retornada na coluna query_plan da tabela resultante para sys.dm_exec_query_statistics_xml.
- Se o plano de consulta que corresponde ao session_id especificado não estiver mais em execução, a
query_plancoluna da tabela retornada será nula. Por exemplo, esta condição pode ocorrer se houver um atraso temporal entre quando o identificador de plano foi capturado e quando foi usado comsys.dm_exec_query_statistics_xml
Devido a uma limitação no número de níveis aninhados permitidos no tipo de dados xml , sys.dm_exec_query_statistics_xml não é possível retornar planos de consulta que atendam ou excedam 128 níveis de elementos aninhados. Em versões anteriores do SQL Server, essa condição impedia que o plano de consulta retornasse e gera o erro 6335. No SQL Server 2005 (9.x) Service Pack 2 e versões posteriores, a query_plan coluna retorna NULL.
Permissões
Requer VIEW SERVER STATE permissão no servidor, no SQL Server 2019 (15.x) e versões anteriores.
Requer VIEW SERVER PERFORMANCE STATE permissão no servidor, no SQL Server 2022 (16.x) e versões posteriores.
Requer a VIEW DATABASE STATE permissão na base de dados, nos níveis Premium do SQL Database.
Requer o administrador do servidor ou uma conta de administrador do Microsoft Entra nas camadas Standard e Basic do Banco de dados SQL.
Exemplos
Um. Observe o plano de consulta em tempo real e as estatísticas de execução de um lote em execução
No exemplo seguinte, consulta-se sys.dm_exec_requests para identificar a consulta interessante e copiar session_id a partir do resultado.
SELECT *
FROM sys.dm_exec_requests;
GO
Em seguida, para obter o plano de consulta ao vivo e estatísticas de execução, use a session_id copiada com a função do sistema sys.dm_exec_query_statistics_xml. Execute essa consulta em uma sessão diferente da sessão em que a consulta está sendo executada.
SELECT * FROM sys.dm_exec_query_statistics_xml(< copied session_id >);
GO
Ou, combinado para todas as solicitações em execução. Execute essa consulta em uma sessão diferente da sessão em que a consulta está sendo executada.
SELECT eqs.query_plan,
er.session_id,
er.request_id,
er.database_id,
er.start_time,
er.[status],
er.wait_type,
er.wait_resource,
er.last_wait_type,
(er.cpu_time / 1000) AS cpu_time_sec,
(er.total_elapsed_time / 1000) / 60 AS elapsed_time_minutes,
(er.logical_reads * 8) / 1024 AS logical_reads_KB,
er.granted_query_memory,
er.dop,
er.row_count,
er.query_hash,
er.query_plan_hash
FROM sys.dm_exec_requests AS er
CROSS APPLY sys.dm_exec_query_statistics_xml(session_id) AS eqs
WHERE er.session_id <> @@SPID;
GO