XML-Abfrageoptionen und beibehaltene Daten
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance
In diesem Artikel werden die Abfrageoptionen beschrieben, die Sie zum Abfragen von XML-Daten angeben müssen. Außerdem werden die Teile von XML-Instanzen beschrieben, die beim Speichern in Datenbanken nicht beibehalten werden.
Festlegen der erforderlichen Abfrageoptionen
Wenn Sie xml-Typspalten oder Variablen mithilfe von XML-Datentypmethoden abfragen, müssen die folgenden Optionen wie dargestellt festgelegt werden.
SET-Optionen | Erforderliche Werte |
---|---|
ANSI_NULLS | EIN |
ANSI_PADDING | EIN |
ANSI_WARNINGS | EIN |
ARITHABORT | EIN |
CONCAT_NULL_YIELDS_NULL | EIN |
NUMERIC_ROUNDABORT | OFF |
QUOTED_IDENTIFIER | EIN |
Wenn die Optionen nicht wie dargestellt festgelegt werden, schlagen Abfragen und Änderungen an XML-Datentypmethoden fehl.
Features einer XML-Instanz, die nicht beibehalten werden
SQL Server behält den Inhalt der XML-Instanz bei, behält jedoch keine Aspekte der XML-Instanz bei, die im XML-Datenmodell nicht als signifikant angesehen 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 <?xml version='1.0'?>
. B. , wird beim Speichern von XML-Daten in einer XML-Datentypinstanz nicht beibehalten. Dies ist beabsichtigt. Die XML-Deklaration () und die Attribute (Version/Codierung/Eigenständigkeit) gehen bei der Konvertierung in den Typ xmlverloren. 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.
Reihenfolge der Attribute
Die Reihenfolge der Attribute in einer XML-Instanz wird nicht beibehalten. 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.
Anführungszeichen um Attributwerte
Einfache Anführungszeichen und doppelte Anführungszeichen um Attributwerte bleiben 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" />
.
Namespacepräfixe
Namespacepräfixe bleiben 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>
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für