Partilhar via


Formatação XML do lado do cliente (SQLXML 4.0)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Este tópico fornece informações sobre a formatação XML do lado do cliente. A formatação do lado do cliente refere-se à formatação do XML no nível intermédio.

Observação

Este tópico fornece informações adicionais sobre a utilização da cláusula FOR XML no lado do cliente, e assume que já está familiarizado com a cláusula FOR XML. Para mais informações sobre FOR XML, veja Construir XML Usando FOR XML.

SQLNCLI11 foi a primeira versão do fornecedor do SQL Server a compreender totalmente os tipos de dados introduzidos no SQL Server 2005 (9.x). O comportamento para XML do lado do cliente FOR com o fornecedor SQLOLEDB tratará os tipos de dados xml como strings.

Importante

SQL Server Native Client (SNAC) não é fornecido com:

  • SQL Server 2022 (16.x) e versões posteriores
  • SQL Server Management Studio 19 e versões posteriores

O SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o Microsoft OLE DB Provider for SQL Server (SQLOLEDB) herdado não são recomendados para o desenvolvimento de novos aplicativos.

Para novos projetos, use um dos seguintes drivers:

Para o SQLNCLI fornecido como componente do Mecanismo de Base de Dados do SQL Server (versões de 2012 a 2019), consulte esta exceção ao Ciclo de Vida de Suporte .

Formatação de Documentos XML no Lado do Cliente

Quando uma aplicação cliente executa a seguinte consulta:

SELECT FirstName, LastName  
FROM   Person.Contact  
FOR XML RAW  

... Apenas esta parte da consulta é enviada para o servidor:

SELECT FirstName, LastName  
FROM   Person.Contact  

O servidor executa a consulta e devolve um conjunto de linhas (que contém Primeiro Nome e Colunas Apelido) ao cliente. O nível intermédio aplica então a transformação XML FOR ao conjunto de linhas e devolve a formatação XML ao cliente.

De forma semelhante, quando executa uma consulta XPath, o servidor devolve o conjunto de linhas ao cliente e a transformação explícita FOR XML é aplicada ao conjunto de linhas no cliente, gerando a formatação XML desejada.

A tabela seguinte mostra os modos que pode especificar com o lado do cliente FOR XML.

Modo XML FOR do lado do cliente Comment
RAW Produz resultados idênticos quando especificados no lado do cliente ou do servidor PARA XML.
ANINHADO É semelhante ao modo FOR XML AUTO do lado do servidor.
EXPLÍCITO É semelhante ao modo XML explicit do lado do servidor.

Observação

Se especificar o modo AUTO e solicitar formatação XML do lado do cliente, toda a consulta é enviada para o servidor; ou seja, a formatação XML ocorre no servidor. Isto é feito por conveniência, mas note-se que o modo NESTED devolve nomes de tabelas base como nomes de elementos no documento XML gerado. Algumas das aplicações que escreves podem exigir nomes de tabelas base. Por exemplo, pode executar um procedimento armazenado e carregar os dados resultantes num conjunto de dados (no Microsoft .NET Framework), e depois gerar um DiffGram para atualizar os dados nas tabelas. Nesse caso, precisarias da informação da tabela base e terias de usar o modo NESTED.

Benefícios da formatação XML do lado do cliente

A seguir estão alguns benefícios de formatar XML no cliente.

Se tiver procedimentos armazenados no servidor que retornam um único conjunto de linhas, pode solicitar uma transformação XML do lado do cliente FOR para gerar um XML.

Por exemplo, considere o seguinte procedimento armazenado. Este procedimento devolve os primeiros e apelidos dos colaboradores da tabela Person.Contact na base de dados AdventureWorks:

IF EXISTS (SELECT name FROM sysobjects  
   WHERE name = 'GetContacts' AND type = 'P')  
   DROP PROCEDURE GetContacts  
GO  
CREATE PROCEDURE GetContacts  
AS  
    SELECT   FirstName, LastName  
    FROM     Person.Contact  

O seguinte modelo XML executa o procedimento armazenado. A cláusula FOR XML é especificada após o nome do procedimento armazenado.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <sql:query client-side-xml="1">  
    EXEC GetContacts FOR XML NESTED  
  </sql:query>  
</ROOT>  

Como o atributo xml do lado do cliente está definido para 1 (verdadeiro) no modelo, o procedimento armazenado é executado no servidor e o conjunto de duas linhas de colunas devolvido pelo servidor é transformado em XML no nível intermédio e devolvido ao cliente. (Apenas um resultado parcial é mostrado aqui.)

 <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Person.Contact FirstName="Gustavo" LastName="Achong" />   
  <Person.Contact FirstName="Catherine" LastName="Abel" />  
</ROOT>  

Observação

Quando está a usar o Provedor SQLXMLOLEDB ou as Classes Geridas SQLXML, pode usar a propriedade ClientSideXml para solicitar formatação XML do lado do cliente.

A carga de trabalho é mais equilibrada.

Como o cliente faz a formatação XML, a carga de trabalho está equilibrada entre o servidor e o cliente, libertando o servidor para fazer outras funções.

Suporte à Formatação XML do Lado do Cliente

Para suportar a funcionalidade de formatação XML do lado do cliente, o SQLXML fornece:

  • Provedor do SQLXMLOLEDB

  • Classes gerenciadas SQLXML

  • Suporte melhorado para modelos XML

  • Propriedade SqlXmlCommand.ClientSideXml

    Pode especificar a formatação do lado do cliente definindo esta propriedade das classes geridas SQLXML como verdadeira.

Suporte Melhorado a Modelos XML

A partir do SQL Server 2005 (9.x), o modelo XML no SQL Server foi melhorado com a adição do atributo xml do lado do cliente . Se este atributo for definido como verdadeiro, XML é formatado no cliente. Note que este atributo modelo é idêntico em funcionalidade à propriedade SQLXMLOLEDB Provider-specific ClientSideXML.

Observação

Se executar um template XML numa aplicação ADO que utiliza o Provider SQLXMLOLEDB, e especificar tanto o atributo client-side-xml no template como a propriedade ClientSideXML do provider, o valor especificado no template tem prioridade.

Ver também

Arquitetura da Formatação XML do lado do cliente e do lado do servidor (SQLXML 4.0)
PARA XML (SQL Server)
PARA Considerações de Segurança XML (SQLXML 4.0)
Suporte de Tipos de Dados XML em SQLXML 4.0
Classes Geridas SQLXML
Formatação XML do lado do cliente vs. do lado do servidor (SQLXML 4.0)
Objecto SqlXmlCommand (Classes Geridas SQLXML)
Dados XML (SQL Server)