XML-Datentypunterstützung für SQLXML 4.0

Ab SQL Server 2005 unterstützt SQL Server die Eingabe von XML-Daten mithilfe des xml-Datentyps. Dieses Thema enthält Informationen, wie SQLXML 4.0 Instanzen von xml-Datentyp erkennt und unterstützt.

Arbeiten mit XML-Datentypen

Die folgenden Beispiele zeigen, wie Sie mit SQL-Tabellen arbeiten, die Spalten des xml-Datentyps implementieren.

Aufgabe

Beispiel

Thema

So ordnen Sie eine xml-Spalte einer XML-Sicht zu und schließen diese in die Sicht ein

"Zuordnen eines XML-Elements zu einer XML-Datentypspalte"

Standardzuordnung von XSD-Elementen und -Attributen zu Tabellen und Spalten (SQLXML 4.0)

So fügen Sie Daten in eine xml-Spalte mit Updategrams ein

"Einfügen von Daten in eine XML-Datentypspalte"

Einfügen von Daten mit XML-Updategrams (SQLXML 4.0)

Massenladen von XML-Daten in eine xml-Spalte

"Massenladen in XML-Datentypspalten"

Beispiele für XML-Massenladen (SQLXML 4.0)

Richtlinien und Einschränkungen

  • <xsd:any> kann einer Spalte, die einen xml-Datentyp enthält, nicht zugeordnet werden. Dieses Szenario wird in SQLXML durch die sql:overflow-field-Anmerkung unterstützt. Eine weitere Möglichkeit, das Problem zu umgehen, ist die Zuordnung eines xml-Datentypfelds als ein Element von xsd:anyType. Diese Problemumgehung wird im Beispiel "Zuordnen eines XML-Elements zu einer XML-Datentypspalte" gezeigt, auf das in der oben stehenden Tabelle verwiesen wird.

  • XPath-Abfrage in den Inhalten von xml-Datentypspalten wird nicht unterstützt.

  • Die Verwendung einer xml-Datentypspalte in Anmerkungen, in denen sie nicht unterstützt werden (z. B. sql:relationship und sql:key-fields) oder nicht zulässig sind, führt zu SQL Server-Fehlern, die von Komponenten der mittleren Ebene, die SQLXML 4.0 implementieren, nicht aufgefangen werden. Der Grund dafür ist, dass SQLXML keine SQL-Typinformationen erfordert. Dieses Verhalten von SQLXML ist dem für andere Datentypen ähnlich, z. B. BLOB und binäre Typen.

  • Die Zuordnung vonxml-Spalten wird nur für XSD-Schemas unterstützt. XDR-Schemas unterstützen nicht die Zuordnung von xml-Spalten.

  • SQLXML 4.0 verlässt sich auf die Unterstützung für die XML-Analyse, die in SQL Server bereitgestellt wird. Eine xml-Spalte kann entweder als typisiertes XML oder nicht typisiertes XML zugeordnet werden. In beiden Fällen überprüft SQLXML 4.0 die XML-Eingabe nicht. Wenn die XML-Eingabe nicht gültig oder nicht wohlgeformt ist, sendet SQL Server eine Meldung an SQLXML und gibt alle relevanten, vom Server an den Benutzer gesendeten Fehlerinformationen weiter.

  • SQLXML 4.0 verlässt sich auf die eingeschränkte Unterstützung für in SQL Server bereitgestellte DTDs. SQL Server lässt eine interne DTD in Daten des xml-Datentyps zu. Diese können verwendet werden, um Standardwerte bereitzustellen und Entitätsverweise durch ihren erweiterten Inhalt zu ersetzen. SQLXML übergibt die XML-Daten unverändert an den Server (einschließlich der internen DTD). Mithilfe von Drittanbieter-Tools können Sie DTDs in XML-Schemadokumente (XSD) konvertieren und die Daten mit XML-Inlineschemas in die Datenbank laden.

  • SQLXML 4.0 erhält nicht die XML-Deklaration mit den Verarbeitungsanweisungen (z. B. <?xml version='1.0'?>) basierend auf dem Verhalten von SQL Server. Stattdessen wird die XML-Deklaration als Direktive an den SQL Server-XML-Parser behandelt, und seine Attribute (version, encoding und standalone) gehen nach der Konvertierung zum xml-Datentyp verloren. Die XML-Daten werden intern als UCS-2 gespeichert. Alle anderen Verarbeitungsanweisungen in der XML-Instanz bleiben erhalten. Sie sind in der xml-Spalte zulässig und können durch SQLXML unterstützt werden.