Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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>