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" |
|
Massenladen von XML-Daten in eine xml-Spalte |
"Massenladen in XML-Datentypspalten" |
Richtlinien und Einschränkungen
<xsd:any> kann keiner Spalte zugeordnet werden, die einen xml-Datentyp beinhaltet. 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 basiert auf der eingeschränkten Unterstützung für DTDs, die in SQL Server bereitgestellt wird. SQL Server gestattet die Verwendung einer internen DTD in xml-Datentypdaten, die verwendet werden kann, um Standardwerte anzugeben 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 behält keine Verarbeitungsanweisungen für XML-Deklarationen (z. B. <?xml version='1.0'?>) bei, die auf dem Verhalten von SQL Server basieren. 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.