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
När man använder ett XSD-schema för att tillhandahålla en XML-vy av relationsdatabasen måste elementen och attributen i schemat mappas till tabeller och kolumner i databasen. Raderna i databastabellen/vyn kommer att mappas till element i XML-dokumentet. Kolumnvärdena i databasen mappas till attribut eller element.
När XPath-frågor specificeras mot det annoterade XSD-schemat hämtas data för elementen och attributen i schemat från tabellerna och kolumnerna som de mappas till. För att erhålla ett enda värde från databasen måste den mappning som specificeras i XSD-schemat ha både relations- och fältspecifikation. Om namnet på ett element/attribut inte är samma namn som tabellen/vyn eller kolumnnamnet som det mappas till, används sql:relation - och sql:field-annotationerna för att specificera mappningen mellan ett element eller attribut i ett XML-dokument och tabellen (vyn) eller kolumnen i en databas.
SQL-relation
sql:relationsannotationen läggs till för att mappa en XML-nod i XSD-schemat till en databastabell. Namnet på en tabell (vy) anges som värdet på sql:relation-annotationen .
När sql:relation specificeras på ett element gäller omfattningen av denna annotation för alla attribut och barnelement som beskrivs i den komplexa typdefinitionen av det elementet, vilket ger en genväg för att skriva annotationer.
sql:relationsannotationen är också användbar när identifierare som är giltiga i Microsoft SQL Server inte är giltiga i XML. Till exempel är "Order Details" ett giltigt tabellnamn i SQL Server men inte i XML. I sådana fall kan sql:relation-annotationen användas för att specificera mappningen, till exempel:
<xsd:element name="OD" sql:relation="[Order Details]">
sql-field
SQL-fältannotationen mappar ett element eller attribut till en databaskolumn. sql:field-annotationen läggs till för att mappa en XML-nod i schemat till en databaskolumn. Du kan inte ange sql:field på ett tomt innehållselement.
Examples
För att skapa arbetsprover med hjälp av följande exempel måste du uppfylla vissa krav. För mer information, se Krav för att köra SQLXML-exempel.
A. Specificering av sql:relation- och sql:field-annotationerna
I detta exempel består XSD-schemat av ett <Kontaktelement> av komplex typ med <FName-> och <LName-barnelement> samt attributet ContactID .
sql:relation-annoteringen mappar Kontakt-elementet <> till Person.Contact-tabellen i AdventureWorks-databasen. sql:field-annotationen mappar FName-elementet<> till FirstName-kolumnen och LName-elementet<> till LastName-kolumnen.
Ingen anteckning specificeras för attributet ContactID . Detta resulterar i en standardmappning av attributet till kolumnen med samma namn.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
sql:field="FirstName"
type="xsd:string" />
<xsd:element name="LName"
sql:field="LastName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ContactID"
type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
För att testa en exempel-XPath-fråga mot schemat
Kopiera schemakoden ovan och klistra in den i en textfil. Spara filen som MySchema-annotated.xml.
Kopiera följande mall nedan och klistra in den i en textfil. Spara filen som MySchema-annotatedT.xml i samma katalog där du sparade MySchema-annotated.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema-annotated.xml"> /Contact </sql:xpath-query> </ROOT>Den katalogväg som anges för mappningsschemat (MySchema-annotated.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:
mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.
För mer information, se Användning av ADO för att köra SQLXML-frågor.
Här är det delvisa resultatet:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1">
<FName>Gustavo</FName>
<LName>Achong</LName>
</Contact>
.....
</ROOT>