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.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
Der AUTO-Modus ermittelt die Form des zurückgegebenen XML-Codes auf der Grundlage der Abfrage. Um zu ermitteln, wie die Elemente geschachtelt werden sollen, vergleicht die AUTO-Modus-Heuristik die Spaltenwerte in benachbarten Zeilen. Dabei werden Spalten aller Datentypen, mit Ausnahme von ntext, text, imageund xmlmiteinander verglichen. Spalten des Datentyps (n)varchar(max) und varbinary(max) werden verglichen.
Das folgende Beispiel veranschaulicht die Heuristik des AUTO-Modus beim Ermitteln der Form des resultierenden XML-Codes:
SELECT T1.Id, T2.Id, T1.Name
FROM T1, T2
WHERE Col1 = 1 /* actual predicate goes here*/
ORDER BY T1.Id
FOR XML AUTO;
Um zu ermitteln, wo ein neues <T1>-Element beginnt, werden alle Spaltenwerte von Tabelle T1 (außer ntext, text, image und xml) verglichen, wenn der Schlüssel für die Tabelle T1 nicht angegeben wurde. Nehmen wir als Nächstes an, dass die Name -Spalte den Typ nvarchar(40) aufweist und dass die SELECT-Anweisung das folgende Rowset zurückgibt:
T1.Id T1.Name T2.Id
-----------------------
1 Andrew 2
1 Andrew 3
1 Nancy 4
Die Heuristik des AUTO-Modus vergleicht alle Werte aus Tabelle T1, die Id- und die Name-Spalten. Die ersten beiden Zeilen verfügen über dieselben Werte für die Spalten Id und Name. Als Ergebnis wird ein einzelnes Element <T1> mit zwei untergeordneten Elementen <T2> hinzugefügt.
Der folgende XML-Code wird zurückgegeben:
<T1 Id="1" Name="Andrew">
<T2 Id="2" />
<T2 Id="3" />
</T1>
<T1 Id="1" Name="Nancy" >
<T2 Id="4" />
</T>
Nehmen wir jetzt an, dass die Name-Spalte den text-Typ aufweist. Die Heuristik des AUTO-Modus führt keinen Vergleich der Werte für diesen Typ durch. Stattdessen wird angenommen, dass sich die Werte voneinander unterscheiden. Dadurch wird der folgende XML-Code wie in der folgenden Ausgabe generiert:
<T1 Id="1" Name="Andrew" >
<T2 Id="2" />
</T1>
<T1 Id="1" Name="Andrew" >
<T2 Id="3" />
</T1>
<T1 Id="1" Name="Nancy" >
<T2 Id="4" />
</T1>