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.
In diesem Thema werden die Abfrageoptionen beschrieben, die für die Abfrage von XML-Daten anzugeben sind. Es beschreibt auch die Teile der XML-Instanzen, die nicht beibehalten werden, wenn sie in Datenbanken gespeichert werden.
In diesem Thema
Funktionen einer XML-Instanz, die nicht beibehalten werden
Festlegen der erforderlichen Abfrageoptionen
Funktionen einer XML-Instanz, die nicht beibehalten werden
SQL Server behält den Inhalt der XML-Instanz bei. Allerdings werden die Aspekte der XML-Instanz nicht beibehalten, die im Hinblick auf das XML-Datenmodell als nicht signifikant betrachtet werden. Das bedeutet, dass eine abgerufene XML-Instanz möglicherweise nicht mit der Instanz identisch ist, die auf dem Server gespeichert wurde, aber die gleichen Informationen enthält.
XML-Deklaration
Die XML-Deklaration in einer Instanz wird nicht beibehalten, wenn die Instanz in der Datenbank gespeichert wird. Beispiel:
CREATE TABLE T1 (Col1 int primary key, Col2 xml)
GO
INSERT INTO T1 values (1, '<?xml version="1.0" encoding="windows-1252" ?><doc></doc>')
GO
SELECT Col2
FROM T1
Das Ergebnis ist <doc/>.
Die XML-Deklaration, z. B. <?xml version='1.0'?>, wird nicht beibehalten, wenn die XML-Daten in einer xml-Datentypinstanz gespeichert werden. Dies ist programmbedingt. Die XML-Deklaration (<?xml ... ?>) und die Attribute (Version/Codierung/Eigenständigkeit) gehen bei der Konvertierung in den Typ xml verloren. Die XML-Deklaration wird als Direktive für den XML-Parser behandelt. Die XML-Daten werden intern als ucs-2 gespeichert. Alle anderen PIs in der XML-Instanz werden beibehalten.
[NACH OBEN]
Reihenfolge von Attributen
Die Reihenfolge der Attribute in einer XML-Instanz wird nicht erhalten. Bei einer Abfrage der in der xml-Typspalte gespeicherten XML-Instanz kann die Reihenfolge der Attribute in der resultierenden XML von der der ursprünglichen XML-Instanz abweichen.
[NACH OBEN]
Anführungszeichen um Attributwerte
Einfache Anführungszeichen und doppelte Anführungszeichen um Attributwerte werden nicht erhalten. Die Attributwerte werden in der Datenbank als Name/Wert-Paar gespeichert. Die Anführungszeichen werden nicht gespeichert. Wenn eine XQuery-Abfrage für eine XML-Instanz ausgeführt wird, wird die resultierende XML mit doppelten Anführungszeichen um die Attributwerte serialisiert.
DECLARE @x xml
-- Use double quotation marks.
SET @x = '<root a="1" />'
SELECT @x
GO
DECLARE @x xml
-- Use single quotation marks.
SET @x = '<root a=''1'' />'
SELECT @x
GO
Für beide Abfragen wird Folgendes zurückgeben: = <root a="1" />.
[NACH OBEN]
Namespacepräfixe
Namespacepräfixe werden nicht erhalten. Wenn Sie eine XQuery-Abfrage für eine xml-Typspalte angeben, werden vom serialisierten XML-Ergebnis möglicherweise andere Namespacepräfixe zurückgeben.
DECLARE @x xml
SET @x = '<ns1:root xmlns:ns1="abc" xmlns:ns2="abc">
<ns2:SomeElement/>
</ns1:root>'
SELECT @x
SELECT @x.query('/*')
GO
Das Namespacepräfix des Ergebnisses kann unterschiedlich sein. Beispiel:
<p1:root xmlns:p1="abc"><p1:SomeElement/></p1:root>
[NACH OBEN]
Festlegen der erforderlichen Abfrageoptionen
Beim Abfragen von Spalten oder Variablen des xml-Datentyps mithilfe von xml-Datentypmethoden müssen die folgenden Optionen wie dargestellt festgelegt werden.
SET-Optionen |
Erforderliche Werte |
|---|---|
ANSI_NULLS |
ON |
ANSI_PADDING |
ON |
ANSI_WARNINGS |
ON |
ARITHABORT |
ON |
CONCAT_NULL_YIELDS_NULL |
ON |
NUMERIC_ROUNDABORT |
OFF |
QUOTED_IDENTIFIER |
ON |
Wenn die Optionen nicht wie dargestellt festgelegt sind, schlagen Abfragen und Änderungen für xml-Datentypmethoden fehl.
[NACH OBEN]