Anteckning
Å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
Det här exemplet illustrerar hur data i spillkolumnen hanteras med hjälp av XMLTEXT-direktivet i en SELECT instruktion med explicit läge.
Tänk på tabellen Person . Den här tabellen har en kolumn Overflow som sparar den oåtkomnade delen av XML-dokumentet.
USE tempdb;
GO
CREATE TABLE Person(PersonID varchar(5), PersonName varchar(20), Overflow nvarchar(200));
GO
INSERT INTO Person VALUES
    ('P1','Joe',N'<SomeTag attr1="data">content</SomeTag>')
   ,('P2','Joe',N'<SomeTag attr2="data"/>')
   ,('P3','Joe',N'<SomeTag attr3="data" PersonID="P">content</SomeTag>');
Den här frågan hämtar kolumner från Person tabellen. 
              Overflow
              AttributeName har inte angetts för kolumnen, men direktivet är inställt på XMLTEXT som en del av tillhandahållandet av ett universellt tabellkolumnnamn.
SELECT 1 as Tag, NULL as parent,
       PersonID as [Parent!1!PersonID],
       PersonName as [Parent!1!PersonName],
       Overflow as [Parent!1!!XMLTEXT] -- No AttributeName; XMLTEXT directive
FROM Person
FOR XML EXPLICIT;
I det resulterande XML-dokumentet:
Eftersom AttributeName inte har angetts för
Overflowkolumnen ochxmltextdirektivet har angetts läggs attributen i elementet<overflow>till i attributlistan för det omslutande<Parent>elementet.PersonIDEftersom attributet i elementet<xmltext>står i konflikt med attributetPersonIDsom hämtats på samma elementnivå ignoreras attributet i elementet<xmltext>, även omPersonIDdet är NULL. Ett attribut åsidosätter i allmänhet ett attribut med samma namn i overflow.
Det här är resultatet:
<Parent PersonID="P1" PersonName="Joe" attr1="data">content</Parent>
<Parent PersonID="P2" PersonName="Joe" attr2="data"></Parent>
<Parent PersonID="P3" PersonName="Joe" attr3="data">content</Parent>
Om spilldata har underelement och samma fråga har angetts läggs underelementen Overflow i kolumnen till som underelement i omslutande <Parent> element.
Du kan till exempel ändra data i Person tabellen så att Overflow kolumnen nu har underelement.
USE tempdb;
GO
TRUNCATE TABLE Person;
GO
INSERT INTO Person VALUES
    ('P1','Joe',N'<SomeTag attr1="data">content</SomeTag>')
   ,('P2','Joe',N'<SomeTag attr2="data"/>')
    ,('P3','Joe',N'<SomeTag attr3="data" PersonID="P"><name>PersonName</name></SomeTag>');
Om samma fråga körs läggs underelementen i elementet <xmltext> till som underelement i det omslutande <Parent> elementet:
SELECT 1 as Tag, NULL as parent,
       PersonID as [Parent!1!PersonID],
       PersonName as [Parent!1!PersonName],
       Overflow as [Parent!1!!XMLTEXT] -- no AttributeName, XMLTEXT directive
FROM Person
FOR XML EXPLICIT;
Det här är resultatet:
<Parent PersonID="P1" PersonName="Joe" attr1="data">content</Parent>
<Parent PersonID="P2" PersonName="Joe" attr2="data"></Parent>
<Parent PersonID="P3" PersonName="Joe" attr3="data">
<name>PersonName</name>
</Parent>
Om AttributeName anges med xmltext direktivet läggs elementets <overflow> attribut till som attribut för underelementen i det omslutande <Parent> elementet. Namnet som anges för AttributeName blir namnet på underelementet
I den här frågan anges AttributeName, <overflow>, tillsammans med xmltext direktivet*:*
SELECT 1 as Tag, NULL as parent,
       PersonID as [Parent!1!PersonID],
       PersonName as [Parent!1!PersonName],
       Overflow as [Parent!1!overflow!XMLTEXT] -- Overflow is AttributeName
                      -- XMLTEXT is a directive
FROM Person
FOR XML EXPLICIT;
Det här är resultatet:
<Parent PersonID="P1" PersonName="Joe">
<overflow attr1="data">content</overflow>
</Parent>
<Parent PersonID="P2" PersonName="Joe">
<overflow attr2="data" />
</Parent>
<Parent PersonID="P3" PersonName="Joe">
<overflow attr3="data" PersonID="P">
<name>PersonName</name>
</overflow>
</Parent>
I det här frågeelementet anges direktivet för PersonName attribut. Detta resulterar i att PersonName blir ett underelement till det omslutande <Parent>-elementet. Attributen för <xmltext> läggs fortfarande till i det omslutande <Parent> elementet. Innehållet i elementet <overflow> prefixeras till underelementen i de omslutande <Parent>-elementen.
SELECT 1      AS Tag, NULL as parent,
       PersonID   AS [Parent!1!PersonID],
       PersonName AS [Parent!1!PersonName!element], -- element directive
       Overflow   AS [Parent!1!!XMLTEXT]
FROM Person
FOR XML EXPLICIT;
Det här är resultatet:
<Parent PersonID="P1" attr1="data">content<PersonName>Joe</PersonName>
</Parent>
<Parent PersonID="P2" attr2="data">
<PersonName>Joe</PersonName>
</Parent>
<Parent PersonID="P3" attr3="data">
<name>PersonName</name>
<PersonName>Joe</PersonName>
</Parent>
              XMLTEXT Om kolumndata innehåller attribut för rotelementet visas inte dessa attribut i XML-dataschemat och MSXML-parsern verifierar inte det resulterande XML-dokumentfragmentet. Till exempel:
SELECT 1 AS Tag,
       0 AS Parent,
       N'<overflow a="1"/>' AS 'overflow!1!!xmltext'
FOR XML EXPLICIT, xmldata;
Det här är resultatet. I det returnerade schemat saknas overflow-attributet a i schemat:
<Schema name="Schema2"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="overflow" content="mixed" model="open">`
</ElementType>`
</Schema>`
<overflow xmlns="x-schema:#Schema2" a="1">
</overflow>