Compartilhar via


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

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 de XML na camada intermediária.

Observação

Este tópico fornece informações adicionais sobre como usar a cláusula FOR XML no lado do cliente e pressupõe que você já esteja familiarizado com a cláusula FOR XML. Para obter mais informações sobre FOR XML, consulte Construção de XML usando FOR XML.

Importante Para usar a funcionalidade FOR XML do lado do cliente com o novo xml tipo de dados, os clientes sempre devem usar o provedor de dados SQL Server Native Client (SQLNCLI11) em vez do provedor SQLOLEDB. SQLNCLI11 é a versão mais recente do provedor do SQL Server e compreende completamente os tipos de dados introduzidos no SQL Server 2005. O comportamento do FOR XML do lado do cliente com o provedor SQLOLEDB tratará xml os tipos de dados como cadeias de caracteres.

Formatação de documentos XML no lado do cliente

Quando um aplicativo cliente executa a seguinte consulta:

SELECT FirstName, LastName  
FROM   Person.Contact  
FOR XML RAW  

... somente essa parte da consulta é enviada ao servidor:

SELECT FirstName, LastName  
FROM   Person.Contact  

O servidor executa a consulta e retorna um conjunto de linhas (que contém FirstName e LastNamecolumns) para o cliente. Em seguida, a camada intermediária aplica a transformação FOR XML ao conjunto de linhas e retorna a formatação XML ao cliente.

Da mesma forma, quando você executa uma consulta XPath, o servidor retorna o conjunto de linhas para o cliente e a transformação FOR XML EXPLICIT é aplicada ao conjunto de linhas no cliente, gerando a formatação XML desejada.

A tabela a seguir mostra os modos que você pode especificar com FOR XML do lado do cliente.

Modo FOR XML do lado do cliente Comentário
CRU Produz resultados idênticos quando especificados no lado do cliente ou no lado do servidor FOR XML.
ANINHADO É semelhante ao modo FOR XML AUTO no lado do servidor.
EXPLÍCITO É semelhante ao modo FOR XML EXPLICIT do lado do servidor.

Observação

Se você especificar o modo AUTO e solicitar a formatação XML do lado do cliente, toda a consulta será enviada ao servidor; ou seja, a formatação XML ocorre no servidor. Isso é feito por conveniência, mas observe que o modo ANINHADO retorna nomes de tabela base como nomes de elemento no documento XML gerado. Alguns dos aplicativos que você escreve podem exigir nomes de tabela base. Por exemplo, você pode executar um procedimento armazenado e carregar os dados resultantes em um conjunto de dados (no Microsoft .NET Framework) e depois gerar um DiffGram para atualizar os dados nas tabelas. Nesse caso, você precisaria das informações da tabela base e precisaria usar o modo ANINHADO.

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

Veja a seguir alguns benefícios da formatação de XML no cliente.

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

Por exemplo, considere o procedimento armazenado a seguir. Este procedimento retorna os primeiros e sobrenomes dos funcionários da tabela Person.Contact no banco 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 modelo XML de exemplo a seguir 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 é definido como 1 (true) no modelo, o procedimento armazenado é executado no servidor e o conjunto de linhas de duas colunas retornado pelo servidor é transformado em XML na camada intermediária e retornado ao cliente. (Somente 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

Ao usar o Provedor SQLXMLOLEDB ou as Classes Gerenciadas SQLXML, você pode usar a ClientSideXml propriedade para solicitar a 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 é equilibrada entre o servidor e o cliente, liberando o servidor para fazer outras coisas.

Suporte à formatação XML do lado do cliente

Para dar suporte à funcionalidade de formatação XML do lado do cliente, o SQLXML fornece:

  • Provedor SQLXMLOLEDB

  • Classes gerenciadas SQLXML

  • Suporte aprimorado ao modelo XML

  • Propriedade SqlXmlCommand.ClientSideXml

    Você pode especificar a formatação do lado do cliente definindo essa propriedade das classes gerenciadas SQLXML como true.

Suporte aprimorado ao modelo XML

A partir do SQL Server 2005, o modelo XML no SQL Server foi aprimorado com a adição do atributo xml do lado do cliente . Se esse atributo for definido como true, XML será formatado no cliente. Observe que esse atributo de modelo é idêntico na funcionalidade à propriedade ClientSideXML específica do provedor SQLXMLOLEDB.

Observação

Se você executar um modelo XML em um aplicativo ADO que esteja usando o Provedor SQLXMLOLEDB e especificar o atributo do lado do cliente xml no modelo e na propriedade ClientSideXML do provedor, o valor especificado no modelo terá precedência.

Consulte Também

Arquitetura da Formatação XML do lado do cliente e do servidor (SQLXML 4.0)
FOR XML (SQL Server)
Considerações de segurança FOR XML (SQLXML 4.0)
Suporte a tipo de dados xml no SQLXML 4.0
Classes gerenciadas SQLXML
Formatação XML do lado do cliente versus servidor (SQLXML 4.0)
Objeto SqlXmlCommand (classes gerenciadas SQLXML)
Dados XML (SQL Server)