Megosztás a következőn keresztül:


XML-lekérdezési beállítások és megőrzött adatok

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a cikk az XML-adatok lekérdezéséhez megadható lekérdezési beállításokat ismerteti. Az XML-példányok azon részeit is ismerteti, amelyek nem maradnak meg az adatbázisokban való tároláskor.

A szükséges lekérdezési beállítások megadása

Ha xml-típusú oszlopokat vagy változókat kérdez le xml-adattípus-metódusokkal, a következő beállításokat kell megadni az ábrán látható módon.

BEÁLLÍTÁSi beállítások Kötelező értékek
ANSI_NULLS ON
ANSI_PADDING ON
ANSI_WARNINGS (ANSI figyelmeztetések) ON
ARITHABORT ON
CONCAT_NULL_YIELDS_NULL ON
NUMERIC_ROUNDABORT KI
QUOTED_IDENTIFIER ON

Ha a beállítások nem az ábrán látható módon vannak beállítva, az XML-adattípus-metódusokkal kapcsolatos lekérdezések és módosítások sikertelenek lesznek.

Az XML-példány nem őrzött funkciói

Az SQL Server megőrzi az XML-példány tartalmát, de nem őrzi meg az XML-példány azon aspektusait, amelyek nem tekinthetők jelentősnek az XML-adatmodellben. Ez azt jelenti, hogy a lekért XML-példány nem feltétlenül azonos a kiszolgálón tárolt példánysal, de ugyanazokat az információkat tartalmazza.

XML-deklaráció

A példány XML-deklarációja nem marad meg, ha a példány az adatbázisban van tárolva. Például:

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;

Az eredmény: <doc/>.

Az XML-deklaráció, például <?xml version='1.0'?>, nem marad meg, amikor XML-adatokat tárolnak egy xml adattípus példányban. Ez szándékosan van így. Az XML-deklaráció () és attribútumai (verzió/kódolás/önálló) elvesznek, miután az adatok xml-típussá alakulnak. Az XML-deklarációt az XML-elemző irányelvként kezeli. Az XML-adatokat a rendszer belsőleg ucs-2 formátumban tárolja. Az XML-példány összes többi feldolgozási utasítása megmarad.

Attribútumok sorrendje

Az XML-példányban lévő attribútumok sorrendje nem marad meg. Amikor az XML-típus oszlopban tárolt XML-példányt kérdezi le, az eredményként kapott XML attribútumainak sorrendje eltérhet az eredeti XML-példánytól.

Idézőjelek az attribútumértékek körül

Az attribútumértékek körüli idézőjelek és dupla idézőjelek nem maradnak meg. Az attribútumértékek név- és értékpárként vannak tárolva az adatbázisban. Az idézőjelek nincsenek tárolva. Amikor egy XQueryt egy XML-példányon hajt végre, a rendszer az eredményül kapott XML-t idézőjelekkel szerializálja az attribútumértékek körül.

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

Mindkét lekérdezés eredménye = <root a="1" />.

Névtér előtagok

A névtér előtagok nem maradnak meg. Ha XQueryt ad meg egy XML-típusoszlophoz , a szerializált XML-eredmény eltérő névtérelőtagokat adhat vissza.

DECLARE @x xml;
SET @x = '<ns1:root xmlns:ns1="abc" xmlns:ns2="abc">
            <ns2:SomeElement/>
          </ns1:root>';
SELECT @x;
SELECT @x.query('/*');
GO

Az eredmény névtérelőtagja eltérő lehet. Például:

<p1:root xmlns:p1="abc"><p1:SomeElement/></p1:root>

Lásd még