Planos de Execução XML

No Microsoft SQL Server, a saída do plano de execução Showplan pode ser gerada em formato XML formato através de vários métodos. A saída Showplan em formato XML pode ser movida de um computador a outro e passada para qualquer computador, até mesmo para computadores em que o SQL Server não está instalado. A saída Showplan em formato XML também pode ser processada programaticamente com tecnologias XML, como XPATH, XQuery, XSLT, SAX, DOM e assim por diante. O processamento de plano de execução XML tem suporte no SQL Server, que contém um mecanismo de avaliação de consulta incorporado para XPath e XQuery.

Você pode gerar saída de planos de execução XML com os seguintes métodos:

  • Selecionando Exibir Plano de Execução Estimado ou Incluir Plano de Execução Real na barra de ferramentas do editor de consultas no SQL Server Management Studio

  • Usando as opções de instrução SET do plano de execução do Transact-SQL: SHOWPLAN_XML e STATISTICS XML

  • Selecionando as classes de evento do SQL Server Profiler: Showplan XML, Showplan XML for Query Compile e Showplan XML Statistics Profile para rastreamento

  • Usando a função de gerenciamento dinâmico sys.dm_exec_query_plan

Os planos de execução XML são retornados nos tipos de dados nvarchar(max) para todos esses métodos, exceto quando você usa sys.dm_exec_query_plan. Showplans XML são retornados no tipo de dados xml quando você usa essa exibição de gerenciamento dinâmico.

O esquema XML para Showplan está disponível com os arquivos de instalação do SQL Server no seguinte local:

C:\Arquivos de Programas\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd

ObservaçãoObservação

Se o otimizador de consulta terminar a otimização da consulta prematuramente, o atributo StatementOptmEarlyAbortReason será retornado para o elemento StmtSimple no plano de execução XML de saída. Os possíveis valores para serem exibidos para esse atributo são TimeOut, GoodEnoughPlanFound e MemoryLimitExceeded. Se TimeOut ou GoodEnoughPlanFound forem retornados para esse atributo, nenhuma ação será necessária. O Showplan retornado contém resultados corretos.

Se MemoryLimitExceeded for retornado para o atributo StatementOptmEarlyAbortReason, o plano de execução XML produzido ainda estará correto, mas poderá não ser o ideal. Tente um dos seguintes métodos para aumentar a memória disponível: 1) Reduza a carga no servidor. 2) Aumente a memória disponível para o SQL Server. Para obter mais informações, consulte Gerenciando memória para bancos de dados grandes. 3) Verifique a opção max server memory definida com sp_configure e aumente seu valor se ele for muito baixo. Para obter mais informações, consulte Opções de memória do servidor.

Sobre o esquema do plano de execução XML

A designação de versão do esquema do plano de execução XML consiste em duas partes, como um m.n, em que m é o número da versão principal e n é o número da versão secundária. Por exemplo, "Versão 2.5". Esse número de versão aparece no elemento raiz do documento Esquema do plano de execução XML. Por exemplo: version="0.5"version="0.5"

Compatibilidade com versões anteriores de esquemas do plano de execução XML

Quando o número da versão principal é incrementado, uma nova saída de plano de execução XML poderá não ser validada no esquema antigo. Porém, se o número da versão secundária for incrementado, não haverá efeito. Por exemplo, se você gerou uma saída de plano de execução XML com um esquema da versão 0.5, essa saída será validada em um esquema do plano de execução XML da versão 0.6.

Codificação de planos de execução XML

O SQL Server envia uma saída de plano de execução XML ao cliente em formato Unicode usando dois bytes para cada caractere enviado. As regras de codificação são as seguintes:

  • Se (char >= 0x0020 && char <= 0xD7FF) ou (char == 0x0009) ou 

    (char == 0x000A) ou (char == 0x000D) ou (char >= 0xE000 && char <= 0xFFFD)

    then envia o caractere como 2 bytes, else envia '?'

  • Caractere de tabulação, de nova linha ou de avanço de linha são codificados da seguinte forma:

    • \t é codificado como '&#x9;'

    • \n é codificado como '&#xa;'

    • \r é codificado como '&#xd;'

Salvando uma saída de plano de execução XML em um arquivo

Depois que uma saída de Showplan foi gerada com o SHOWPLAN_XML ou com as instruções STATISTICS XML Transact-SQL SET, você poderá salvar a saída em um arquivo com a extensão .sqlplan. Por exemplo, MyXMLShowplan.sqlplan. Esses arquivos .sqlplan podem ser abertos e exibidos no SQL Server Management Studio. Para obter mais informações, consulte Como salvar um plano de execução em formato XML.