Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
I den här artikeln beskrivs de frågealternativ som du måste ange för att köra frågor mot XML-data. Den beskriver också de delar av XML-instanser som inte bevaras när de lagras i databaser.
Ange obligatoriska frågealternativ
När du kör frågor mot xml-typkolumner eller variabler med hjälp av xml-datatypsmetoder måste följande alternativ anges som de visas.
| SET-alternativ | Obligatoriska värden |
|---|---|
| ANSI_NULLS | ON |
| ANSI_PADDING | ON |
| ANSI_WARNINGS | ON |
| ARITHABORT | ON |
| CONCAT_NULL_YIELDS_NULL | ON |
| NUMERISK_AVRUND_AVBRYT | AV |
| QUOTED_IDENTIFIER | ON |
Om alternativen inte anges som de visas misslyckas frågor och ändringar av xml-datatypsmetoder .
Funktioner i en XML-instans som inte bevaras
SQL Server bevarar innehållet i XML-instansen, men bevarar inte aspekter av XML-instansen som inte anses vara betydande i XML-datamodellen. Det innebär att en hämtad XML-instans kanske inte är identisk med den instans som lagrades på servern, men innehåller samma information.
XML-deklaration
XML-deklarationen i en instans bevaras inte när instansen lagras i databasen. Till exempel:
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;
Resultatet är <doc/>.
XML-deklarationen, till exempel <?xml version='1.0'?>, bevaras inte när XML-data lagras i en xml-datatypsinstans . Det här är avsiktligt. XML-deklarationen () och dess attribut (version/kodning/fristående) går förlorade när data har konverterats till typen xml. XML-deklarationen behandlas som ett direktiv till XML-parsern. XML-data lagras internt som ucs-2. Alla andra PI:er i XML-instansen bevaras.
Attributordning
Ordningen på attribut i en XML-instans bevaras inte. När du kör frågor mot XML-instansen som lagras i kolumnen xml-typ kan ordningen på attributen i den resulterande XML-koden skilja sig från den ursprungliga XML-instansen.
Citattecken runt attributvärden
Enkla citattecken och dubbla citattecken runt attributvärden bevaras inte. Attributvärdena lagras i databasen som ett namn och värdepar. Citattecknen lagras inte. När en XQuery körs mot en XML-instans serialiseras den resulterande XML-koden med dubbla citattecken runt attributvärdena.
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
Båda frågorna returnerar = <root a="1" />.
Namnområdesprefix
Namnområdesprefix bevaras inte. När du anger XQuery mot en xml-typkolumn kan det serialiserade XML-resultatet returnera olika namnområdesprefix.
DECLARE @x xml;
SET @x = '<ns1:root xmlns:ns1="abc" xmlns:ns2="abc">
<ns2:SomeElement/>
</ns1:root>';
SELECT @x;
SELECT @x.query('/*');
GO
Namnområdesprefixet i resultatet kan vara annorlunda. Till exempel:
<p1:root xmlns:p1="abc"><p1:SomeElement/></p1:root>