Esecuzione di modelli che contengono query SQL (provider SQLXMLOLEDB)
In questo esempio viene illustrato l'utilizzo della proprietà specifica del provider SQLXMLOLEDB ClientSideXML. In questa applicazione ADO di esempio sul lato client, viene eseguito un modello XML costituito da una query SQL nel server.
Poiché la proprietà ClientSideXML è impostata su True, viene inviata al server l'istruzione SELECT senza la clausola FOR XML. Il server esegue la query e restituisce un set di righe al client. Il client applica quindi la trasformazione FOR XML al set di righe e produce un documento XML.
Il modello XML fornisce un singolo elemento radice di livello superiore (<ROOT>) per il documento XML generato. Non viene pertanto fornita la proprietà xml root.
Per eseguire il modello XML, è necessario specificare il sottolinguaggio {5d531cb2-e6ed-11d2-b252-00c04f681b71}.
[!NOTA]
Nel codice è necessario specificare il nome dell'istanza di SQL Server nella stringa di connessione. In questo esempio viene inoltre specificato l'utilizzo di SQL Server Native Client (SQLNCLI10) per il provider di dati che richiede l'installazione di un software client di rete aggiuntivo. Per ulteriori informazioni, vedere Requisiti di sistema per SQL Server 2008 Native Client.
Option Explicit
Sub Main()
Dim oTestStream As New ADODB.Stream
Dim oTestConnection As New ADODB.Connection
Dim oTestCommand As New ADODB.Command
oTestConnection.Open "Provider=SQLXMLOLEDB.4.0;Data Provider=SQLNCLI10;Data Source=SqlServerName;Initial Catalog=AdventureWorks;Integrated Security=SSPI;"
Set oTestCommand.ActiveConnection = oTestConnection
oTestCommand.Properties("ClientSideXML") = True
oTestCommand.CommandText = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'> " & _
" <sql:query> " & _
" SELECT TOP 10 FirstName, LastName FROM Person.Contact FOR XML AUTO " & _
" </sql:query> " & _
" </ROOT> "
oTestStream.Open
' You need the dialect if you are executing
' XML templates (not for SQL queries).
oTestCommand.Dialect = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"
oTestCommand.Properties("Output Stream").Value = oTestStream
oTestCommand.Execute , , adExecuteStream
oTestStream.Position = 0
oTestStream.Charset = "utf-8"
Debug.Print oTestStream.ReadText(adReadAll)
End Sub
Sub Form_Load()
Main
End Sub