Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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>