Condividi tramite


Formattazione XML lato client (SQLXML 4.0)

In questo argomento vengono fornite informazioni sulla formattazione XML lato client. La formattazione lato client si riferisce alla formattazione di XML nel livello intermedio.

Annotazioni

In questo argomento vengono fornite informazioni aggiuntive sull'uso della clausola FOR XML sul lato client e si presuppone che si abbia già familiarità con la clausola FOR XML. Per altre informazioni su FOR XML, vedere Costruzione di XML tramite FOR XML.

Importante Per usare la funzionalità FOR XML sul lato client con il nuovo xml tipo di dati, i client devono usare sempre il provider di dati SQL Server Native Client (SQLNCLI11) anziché il provider SQLOLEDB. SQLNCLI11 è la versione più recente del provider SQL Server e comprende completamente i tipi di dati introdotti in SQL Server 2005. Il comportamento del lato client FOR XML con il provider SQLOLEDB considererà xml i tipi di dati come stringhe.

Formattazione di documenti XML sul lato client

Quando un'applicazione client esegue la query seguente:

SELECT FirstName, LastName  
FROM   Person.Contact  
FOR XML RAW  

... solo questa parte della query viene inviata al server:

SELECT FirstName, LastName  
FROM   Person.Contact  

Il server esegue la query e restituisce un set di righe (che contiene FirstName e LastNamecolumns) al client. Il livello intermedio applica quindi la trasformazione FOR XML al set di righe e restituisce la formattazione XML al client.

Analogamente, quando si esegue una query XPath, il server restituisce il set di righe al client e la trasformazione FOR XML EXPLICIT viene applicata al set di righe nel client, generando la formattazione XML desiderata.

La tabella seguente illustra le modalità che è possibile specificare con FOR XML sul lato client.

Modalità FOR XML lato client Commento
CRUDO Produce risultati identici se specificati in FOR XML sul lato client o sul lato server.
ANNIDATO È simile alla modalità FOR XML AUTO sul lato server.
ESPLICITO È simile alla modalità FOR XML EXPLICIT lato server.

Annotazioni

Se si specifica la modalità AUTO e si richiede la formattazione XML sul lato client, l'intera query viene inviata al server; ovvero, la formattazione XML viene eseguita nel server. Questa operazione viene eseguita per praticità, ma si noti che la modalità NESTED restituisce nomi di tabella di base come nomi di elemento nel documento XML generato. Alcune delle applicazioni scritte potrebbero richiedere nomi di tabella di base. Ad esempio, è possibile eseguire una stored procedure e caricare i dati risultanti in un set di dati (in Microsoft .NET Framework) e quindi generare un DiffGram per aggiornare i dati nelle tabelle. In questo caso, sono necessarie le informazioni sulla tabella di base e sarà necessario usare la modalità NESTED.

Vantaggi della formattazione XML sul lato client

Di seguito sono riportati alcuni vantaggi della formattazione xml nel client.

Se nel server sono presenti stored procedure che restituiscono un singolo set di righe, è possibile richiedere la trasformazione FOR XML sul lato client per generare un codice XML.

Si consideri ad esempio la stored procedure seguente. Questa procedura restituisce il nome e il cognome dei dipendenti dalla tabella Person.Contact nel database 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  

Il modello XML di esempio seguente esegue la stored procedure. La clausola FOR XML viene specificata dopo il nome della stored procedure.

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

Poiché l'attributo xml lato client è impostato su 1 (true) nel modello, la stored procedure viene eseguita nel server e il set di righe a due colonne restituito dal server viene trasformato in XML nel livello intermedio e restituito al client. Di seguito è riportato solo un risultato parziale.

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

Annotazioni

Quando si usa il provider SQLXMLOLEDB o le classi gestite SQLXML, è possibile utilizzare la ClientSideXml proprietà per richiedere la formattazione XML lato client.

Il carico di lavoro è più bilanciato.

Poiché il client esegue la formattazione XML, il carico di lavoro viene bilanciato tra il server e il client, liberando il server per eseguire altre operazioni.

Supporto della formattazione XML sul lato client

Per supportare la funzionalità di formattazione XML sul lato client, SQLXML fornisce:

  • SQLXMLOLEDB Provider

  • Classi gestite SQLXML

  • Supporto avanzato dei modelli XML

  • Proprietà SqlXmlCommand.ClientSideXml

    È possibile specificare la formattazione lato client impostando questa proprietà delle classi gestite SQLXML su true.

Supporto avanzato dei modelli XML

A partire da SQL Server 2005, il modello XML in SQL Server è stato migliorato con l'aggiunta dell'attributo xml lato client . Se questo attributo è impostato su true, xml viene formattato nel client. Si noti che questo attributo modello è identico nella funzionalità della proprietà ClientSideXML specifica del provider SQLXML.

Annotazioni

Se si esegue un modello XML in un'applicazione ADO che usa il provider SQLXMLOLEDB e si specifica sia l'attributo xml sul lato client nel modello che la proprietà ClientSideXML del provider, il valore specificato nel modello ha la precedenza.

Vedere anche

Architettura della formattazione XML lato client e lato server (SQLXML 4.0)
FOR XML (SQL Server)
Considerazioni sulla sicurezza FOR XML (SQLXML 4.0)
Supporto del tipo di dati xml in SQLXML 4.0
Classi gestite SQLXML
Formattazione XML lato client e lato server (SQLXML 4.0)
Oggetto SqlXmlCommand (classi gestite SQLXML)
Dati XML (SQL Server)