SET STATISTICS XML (Transact-SQL)
Faz com que o Microsoft SQL Server execute instruções Transact-SQL e gere informações detalhadas sobre como as instruções foram executadas, sob a forma de um documento XML bem definido.
Convenções de sintaxe Transact-SQL
Sintaxe
SET STATISTICS XML { ON | OFF }
Comentários
A configuração de SET STATISTICS XML é definida no momento da execução ou do tempo de execução, e não no momento da análise.
Quando SET STATISTICS XML estiver ON (acionado), o SQL Server retorna informações de execução para cada instrução, depois de executá-las. Depois que essa opção estiver definida como ON, as informações sobre todas as instruções Transact-SQL subsequentes serão retornadas até que a opção esteja definida como OFF. Note que SET STATISTICS XML não precisa ser a única instrução em um lote.
SET STATISTICS XML retorna saída como nvarchar(max) para aplicativos, como o utilitário sqlcmd, onde a saída XML é subsequentemente utilizada por outras ferramentas para exibir e processar as informações do plano de consulta.
SET STATISTICS XML retorna informações como um conjunto de documentos XML. Todas as instruções depois da instrução STATISTICS XML ON serão refletidas na saída por um único documento. Cada documento conterá o texto das instruções, seguido dos detalhes das etapas da execução. A saída mostra informações de tempo de execução como os custos, índices acessados e tipos de operações executadas, ordem de junção, o número de horas de execução de uma operação física, o número de linhas que cada operador físico produziu, e mais.
O documento que contém o esquema XML para a saída do XML por SET STATISTICS XML é copiado durante a instalação em um diretório local no computador no qual o Microsoft SQL Server está instalado. Ele pode ser encontrado na unidade que contém os arquivos de instalação do SQL Server, em:
\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd
O esquema Showplan também pode ser encontrado no site da Web.
SET STATISTICS PROFILE e SET STATISTICS XML são contrapartes um do outro. O primeiro produz saída textual; o último produz saída XML. Em versões futuras do SQL Server, novas informações do plano de execução de consultas serão exibidas apenas com a instrução SET STATISTICS XML, e não com a instrução SET STATISTICS PROFILE.
Observação |
---|
Se Incluir plano de execução real estiver selecionado no SQL Server Management Studio, essa opção SET não produzirá a saída de XML Showplan. Desmarque o botão Incluir Plano de Execução Real antes de usar essa opção SET. |
Permissões
Para usar SET STATISTICS XML e exibir a saída, os usuários devem ter as seguintes permissões:
Permissões adequadas para executar as instruções Transact-SQL.
A permissão SHOWPLAN em todos os bancos de dados referenciados pelas instruções Transact-SQL.
Para instruções Transact-SQL que não produzem conjuntos de resultados STATISTICS XML, somente serão necessárias as permissões apropriadas para executar as instruções Transact-SQL. Para as instruções Transact-SQL que produzem conjuntos de resultados STATISTICS XML, certifique-se de que ambas, a permissão de execução de instrução Transact-SQL e a permissão SHOWPLAN sejam bem-sucedidas, ou a instrução de execução Transact-SQL será anulada e nenhuma informação Showplan será gerada.
Exemplos
As duas instruções a seguir usam as configurações SET STATISTICS XML para mostrar o modo como o SQL Server analisa e otimiza o uso de índices em consultas. A primeira consulta usa o operador de comparação Igual a (=), na cláusula WHERE, em uma coluna indexada. A segunda consulta usa o operador LIKE, na cláusula WHERE. Isto força o SQL Server a usar uma verificação de índice clusterizado para localizar os dados que atendem à condição da cláusula WHERE. Os valores nos atributos EstimateRows e EstimatedTotalSubtreeCost são menores para a primeira consulta indexada, indicando que ela foi processada com maior rapidez e usou menos recursos que a consulta não indexada.
USE AdventureWorks2012;
GO
SET STATISTICS XML ON;
GO
-- First query.
SELECT BusinessEntityID
FROM HumanResources.Employee
WHERE NationalIDNumber = '509647174';
GO
-- Second query.
SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Production%';
GO
SET STATISTICS XML OFF;
GO