Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema enthält Informationen zur clientseitigen XML-Formatierung. Clientseitige Formatierung bezieht sich auf die Formatierung von XML auf der mittleren Ebene.
Hinweis
Dieses Thema enthält zusätzliche Informationen zur Verwendung der FOR XML-Klausel auf clientseitiger Seite und geht davon aus, dass Sie bereits mit der FOR XML-Klausel vertraut sind. Weitere Informationen zu FOR XML finden Sie unter Erstellen von XML mithilfe von FOR XML.
Wichtig Um clientseitige FOR XML-Funktionen mit dem neuen xml Datentyp zu verwenden, sollten Clients immer den SQL Server Native Client (SQLNCLI11)-Datenanbieter anstelle des SQLOLEDB-Anbieters verwenden. SQLNCLI11 ist die neueste Version des SQL Server-Anbieters und versteht datentypen, die in SQL Server 2005 eingeführt wurden. Das Verhalten für clientseitiges FOR XML mit dem SQLOLEDB-Anbieter behandelt xml Datentypen als Zeichenfolgen.
Formatieren von XML-Dokumenten auf clientseitiger Seite
Wenn eine Clientanwendung die folgende Abfrage ausführt:
SELECT FirstName, LastName
FROM Person.Contact
FOR XML RAW
... nur dieser Teil der Abfrage wird an den Server gesendet:
SELECT FirstName, LastName
FROM Person.Contact
Der Server führt die Abfrage aus und gibt ein Rowset (das FirstName und LastNamecolumns enthält) an den Client zurück. Die mittlere Ebene wendet dann die FOR XML-Transformation auf das Rowset an und gibt die XML-Formatierung an den Client zurück.
Ebenso gibt der Server beim Ausführen einer XPath-Abfrage das Rowset an den Client zurück, und die FOR XML EXPLICIT-Transformation wird auf das Rowset auf dem Client angewendet, wodurch die gewünschte XML-Formatierung generiert wird.
In der folgenden Tabelle sind die Modi aufgeführt, die Sie mit clientseitigem FOR XML angeben können.
| Clientseitiger FÜR XML-Modus | Kommentar |
|---|---|
| ROH | Erzeugt identische Ergebnisse, wenn sie in clientseitigem oder serverseitigem FOR XML angegeben werden. |
| VERSCHACHTELT | Ähnelt dem FOR XML AUTO-Modus auf serverseitiger Seite. |
| EXPLIZIT | Ähnelt dem serverseitigen XML EXPLICIT-Modus. |
Hinweis
Wenn Sie den AUTO-Modus angeben und clientseitige XML-Formatierung anfordern, wird die gesamte Abfrage an den Server gesendet. d. h. die XML-Formatierung erfolgt auf dem Server. Dies wird zur Vereinfachung durchgeführt, beachten Sie jedoch, dass der NESTED-Modus Basistabellennamen als Elementnamen im XML-Dokument zurückgibt, das generiert wird. Einige der Anwendungen, die Sie schreiben, erfordern möglicherweise Basistabellennamen. Sie können beispielsweise eine gespeicherte Prozedur ausführen und die resultierenden Daten in einem Dataset (im Microsoft .NET Framework) laden und dann später ein DiffGram generieren, um Daten in den Tabellen zu aktualisieren. In einem solchen Fall benötigen Sie die Basistabelleninformationen, und Sie müssten den GESCHACHTELTEN Modus verwenden.
Vorteile der clientseitigen XML-Formatierung
Im Folgenden sind einige Vorteile der Formatierung von XML auf dem Client aufgeführt.
Wenn Sie auf dem Server gespeicherte Prozeduren haben, die ein einzelnes Rowset zurückgeben, können Sie eine clientseitige FOR XML-Transformation anfordern, um einen XML-Code zu generieren.
Betrachten Sie beispielsweise die folgende gespeicherte Prozedur. Diese Prozedur gibt die Vor- und Nachnamen von Mitarbeitern aus der Tabelle "Person.Contact" in der AdventureWorks-Datenbank zurück:
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
Die folgende XML-Beispielvorlage führt die gespeicherte Prozedur aus. Die FOR XML-Klausel wird nach dem Namen der gespeicherten Prozedur angegeben.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query client-side-xml="1">
EXEC GetContacts FOR XML NESTED
</sql:query>
</ROOT>
Da das clientseitige XML-Attribut in der Vorlage auf 1 (true) festgelegt ist, wird die gespeicherte Prozedur auf dem Server ausgeführt, und das vom Server zurückgegebene zweispaltige Rowset wird in XML auf der mittleren Ebene transformiert und an den Client zurückgegeben. (Hier wird nur ein Teilergebnis angezeigt.)
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Contact FirstName="Gustavo" LastName="Achong" />
<Person.Contact FirstName="Catherine" LastName="Abel" />
</ROOT>
Hinweis
Wenn Sie den SQLXMLOLEDB-Anbieter oder die verwalteten SQLXML-Klassen verwenden, können Sie die ClientSideXml Eigenschaft verwenden, um clientseitige XML-Formatierung anzufordern.
Die Arbeitsauslastung ist ausgeglichener.
Da der Client die XML-Formatierung ausführt, wird die Arbeitsauslastung zwischen Server und Client ausgeglichen, wobei der Server andere Aufgaben ausführen kann.
Unterstützen der clientseitigen XML-Formatierung
Um die clientseitige XML-Formatierungsfunktionalität zu unterstützen, bietet SQLXML Folgendes:
SQLXMLOLEDB-Anbieter
Verwaltete SQLXML-Klassen
Erweiterte XML-Vorlagenunterstützung
SqlXmlCommand.ClientSideXml-Eigenschaft
Sie können clientseitige Formatierungen angeben, indem Sie diese Eigenschaft der verwalteten SQLXML-Klassen auf "true" festlegen.
Erweiterte XML-Vorlagenunterstützung
Ab SQL Server 2005 wurde die XML-Vorlage in SQL Server um das Hinzufügen des clientseitigen XML-Attributs erweitert. Wenn dieses Attribut auf "true" festgelegt ist, wird XML auf dem Client formatiert. Beachten Sie, dass dieses Vorlagenattribute in der Funktionalität mit der providerspezifischen ClientSideXML-Eigenschaft von SQLXMLOLEDB identisch ist.
Hinweis
Wenn Sie eine XML-Vorlage in einer ADO-Anwendung ausführen, die den SQLXMLOLEDB-Anbieter verwendet, und Sie sowohl das clientseitige XML-Attribut in der Vorlage als auch die ClientSideXML-Anbietereigenschaft angeben, hat der in der Vorlage angegebene Wert Vorrang.
Siehe auch
Architektur der clientseitigen und serverseitigen XML-Formatierung (SQLXML 4.0)
FOR XML (SQL Server)
Überlegungen zur XML-Sicherheit (SQLXML 4.0)
XML-Datentypunterstützung in SQLXML 4.0
Verwaltete SQLXML-Klassen
Clientseitige und serverseitige XML-Formatierung (SQLXML 4.0)
SqlXmlCommand-Objekt (SQLXML Managed Classes)
XML-Daten (SQL Server)