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
Banco de Dados SQL do Azure
Instâ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)