Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Database
Aktualizační diagram označuje operaci vložení, když se instance záznamu <after> zobrazí v bloku, ale ne v odpovídajícím <before> bloku. V tomto případě aktualgram vloží záznam do <after> bloku do databáze.
Toto je formát aktualizačního diagramu pro operaci vložení:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync [mapping-schema="SampleSchema.xml"] >
[<updg:before>
</updg:before>]
<updg:after [updg:returnid="x y ..."] >
<ElementName [updg:id="value"]
[updg:at-identity="x"]
[updg:guid="y"]
attribute="value"
attribute="value"
...
/>
[<ElementName .../>... ]
</updg:after>
</updg:sync>
</ROOT>
blok <before>
Blok <before> lze vynechat pro operaci vložení. Pokud není zadaný volitelný mapping-schema atribut, <ElementName> ten se v aktualgramu mapuje na tabulku databáze a podřízené elementy nebo atributy mapované na sloupce v tabulce.
blok <after>
V bloku můžete zadat jeden nebo více záznamů <after> .
<after> Pokud blok nezadává hodnotu pro určitý sloupec, aktualizační diagram použije výchozí hodnotu zadanou v anotovaném schématu (pokud bylo schéma zadáno). Pokud schéma nezadá výchozí hodnotu pro sloupec, aktualogram nezadá do tohoto sloupce žádnou explicitní hodnotu a místo toho přiřadí k tomuto sloupci výchozí hodnotu SQL Serveru (pokud je zadána). Pokud neexistuje žádná výchozí hodnota SQL Serveru a sloupec přijme NULL hodnotu, updategram nastaví hodnotu sloupce na NULLhodnotu . Pokud sloupec nemá výchozí hodnotu nebo přijme NULL hodnotu, příkaz selže a aktualogram vrátí chybu. Volitelný updg:returnid atribut se používá k vrácení hodnoty identity, která je generována systémem při přidání záznamu do tabulky se sloupcem IDENTITY-type.
atribut updg:id
Pokud aktualgram vkládá jenom záznamy, aktualizační diagram nevyžaduje updg:id atribut. Další informace o updg:idaktualizaci dat pomocí aktualgramů XML (SQLXML 4.0)
atribut updg:at-identity
Když aktualogram vloží záznam do tabulky se IDENTITYsloupcem -type, může aktualgram zachytit systém přiřazenou hodnotu pomocí volitelného updg:at-identity atributu. Aktualizační diagram pak může tuto hodnotu použít v následných operacích. Při spuštění aktualizačního diagramu můžete vrátit hodnotu identity vygenerovanou zadáním atributu updg:returnid .
atribut updg:guid
Atribut updg:guid je volitelný atribut, který generuje globálně jedinečný identifikátor. Tato hodnota zůstává v oboru pro celý <sync> blok, ve kterém je zadán. Tuto hodnotu můžete použít kdekoli v <sync> bloku. Atribut volá NEWGUID() funkci SQL Serveru pro vygenerování jedinečného identifikátoru.
Examples
Pokud chcete vytvořit pracovní ukázky pomocí následujících příkladů, musíte splňovat požadavky uvedené v části Požadavky pro spouštění příkladů SQLXML.
Než použijete příklady aktualgramu, zvažte následující:
Většina příkladů používá výchozí mapování (to znamená, že v aktualgramu není zadané žádné schéma mapování). Další příklady aktualizačních diagramů, které používají schémata mapování, najdete v tématu Určení schématu mapování s poznámkami v aktualgramu (SQLXML 4.0).
Většina příkladů používá ukázkovou
AdventureWorks2025databázi. Všechny aktualizace se použijí na tabulky v této databázi.
A. Vložení záznamu pomocí aktualizačního diagramu
Tento aktualgram orientovaný na atribut vloží záznam do HumanResources.Employee tabulky v AdventureWorks2025 databázi.
V tomto příkladu aktualgram neurčí schéma mapování. Aktualgram proto používá výchozí mapování, ve kterém se název elementu mapuje na název tabulky a atributy nebo podřízené prvky mapované na sloupce v této tabulce.
Schéma AdventureWorks2025 pro tabulku HumanResources.Department představuje omezení not null pro všechny sloupce. Proto musí aktualizační diagram obsahovat hodnoty zadané pro všechny sloupce. ID oddělení je IDENTITYsloupec typu -type. Proto nejsou pro ni zadány žádné hodnoty.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:before>
</updg:before>
<updg:after>
<HumanResources.Department Name="New Product Research" GroupName="Research and Development" ModifiedDate="2010-08-31" />
</updg:after>
</updg:sync>
</ROOT>
Otestování ukázkového dotazu XPath na schématu
Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
MyUpdategram.xml.Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění šablony.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
V mapování zaměřeném na element vypadá aktualizační diagram takto:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:before>
</updg:before>
<updg:after>
<HumanResources.Department>
<Name> New Product Research </Name>
<GroupName> Research and Development </GroupName>
<ModifiedDate>2010-08-31</ModifiedDate>
</HumanResources.Department>
</updg:after>
</updg:sync>
</ROOT>
V aktualizačním diagramu zaměřeném na element a atribut může mít prvek atributy i dílčí prvky, jak je znázorněno v tomto aktualgramu:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:before>
</updg:before>
<updg:after>
<HumanResources.Department Name="New Product Research">
<GroupName>Research and Development</GroupName>
<ModifiedDate>2010-08-31</ModifiedDate>
</HumanResources.Department>
</updg:after>
</updg:sync>
</ROOT>
B. Vložení více záznamů pomocí aktualizačního diagramu
Tento aktualogram přidá do HumanResources.Shift tabulky dva nové záznamy shift. Aktualgram nezadá volitelný <before> blok.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:after>
<HumanResources.Shift Name="Day-Evening" StartTime="1900-01-01 11:00:00.000" EndTime="1900-01-01 19:00:00.000" ModifiedDate="2004-01-01 00:00:00.000" />
<HumanResources.Shift Name="Evening-Night" StartTime="1900-01-01 19:00:00.000" EndTime="1900-01-01 03:00:00.000" ModifiedDate="2004-01-01 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
Otestování ukázkového dotazu XPath na schématu
Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
Updategram-AddShifts.xml.Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění šablony.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
Další verzí tohoto příkladu je aktualizační diagram, který k vložení dvou zaměstnanců používá dva samostatné <after> bloky místo jednoho bloku. Toto je platné a lze ho zakódovat následujícím způsobem:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:after>
<HumanResources.Shift Name="Day-Evening" StartTime="1900-01-01 11:00:00.000" EndTime="1900-01-01 19:00:00.000" ModifiedDate="2004-01-01 00:00:00.000" />
</updg:after>
<updg:before>
</updg:before>
<updg:after>
<HumanResources.Shift Name="Evening-Night" StartTime="1900-01-01 19:00:00.000" EndTime="1900-01-01 03:00:00.000" ModifiedDate="2004-01-01 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
C. Práce s platnými znaky SQL Serveru, které nejsou platné v XML
V SQL Serveru můžou názvy tabulek obsahovat mezeru, například tabulku Podrobnosti objednávky v databázi Northwind. To však není platné ve znacích XML, které jsou platné identifikátory SQL Serveru, ale ne platné identifikátory XML lze kódovat jako _xHHHH_ kódovací hodnota, kde HHHH je zkratka čtyřmístného šestnáctkového kódu UCS-2 pro znak v nejvýznamnějším bit-first pořadí.
Poznámka:
Tento příklad používá databázi Northwind. Databázi Northwind můžete nainstalovat pomocí skriptu SQL, který je k dispozici ke stažení z tohoto webu společnosti Microsoft.
Název elementu musí být také uzavřený v hranatých závorkách ([ ]). Vzhledem k tomu, že znaky [a] nejsou v jazyce XML platné, musíte je zakódovat jako _x005B_ a _x005D_v uvedeném pořadí. (Pokud používáte schéma mapování, můžete zadat názvy prvků, které neobsahují znaky, které nejsou platné, například prázdné znaky. Schéma mapování provede nezbytné mapování; proto pro tyto znaky nemusíte kódovat).
Tento aktualizační diagram přidá záznam do tabulky Podrobnosti objednávky v databázi Northwind:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:before>
</updg:before>
<updg:after>
<_x005B_Order_x0020_Details_x005D_ OrderID="1" ProductID="11" UnitPrice="$1.0" Quantity="1" Discount="0.0" />
</updg:after>
</updg:sync>
</ROOT>
Sloupec UnitPrice v tabulce Podrobnosti objednávky je typu peněz . Chcete-li použít odpovídající převod typu (z typu řetězce na typ peněz ), musí být znak dolaru ($) přidán jako součást hodnoty. Pokud aktualogram neurčuje schéma mapování, vyhodnotí se první znak řetězcové hodnoty. Pokud je prvním znakem znak dolaru ($), použije se příslušný převod.
Pokud je aktualogram zadán proti schématu mapování, kde je sloupec správně označen jako buď dt:type="fixed.14.4" nebo sql:datatype="money", znak dolaru ($) není vyžadován a převod je zpracován mapováním. Toto je doporučený způsob, jak zajistit, aby došlo k převodu příslušného typu.
Otestování ukázkového dotazu XPath na schématu
Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
UpdategramSpacesInTableName.xml.Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění šablony.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
D. Pomocí atributu at-identity načtěte hodnotu, která byla vložena do sloupce typu IDENTITY.
Následující aktualogram vloží dva záznamy: jeden v Sales.SalesOrderHeader tabulce a druhý v Sales.SalesOrderDetail tabulce.
Nejprve aktualizační diagram přidá záznam do Sales.SalesOrderHeader tabulky. V této tabulce je IDENTITYsloupec SalesOrderID sloupec -type. Proto když tento záznam přidáte do tabulky, aktualgram použije at-identity atribut k zachycení přiřazené hodnoty SalesOrderID jako "x" (zástupná hodnota). Updategram pak určuje tuto at-identity proměnnou jako hodnotu SalesOrderID atributu <Sales.SalesOrderDetail> elementu.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:before>
</updg:before>
<updg:after>
<Sales.SalesOrderHeader updg:at-identity="x" RevisionNumber="1" OrderDate="2001-07-01 00:00:00.000" DueDate="2001-07-13 00:00:00.000" OnlineOrderFlag="0" CustomerID="676" ContactID="378" BillToAddressID="985" ShipToAddressID="985" ShipMethodID="5" SubTotal="24643.9362" TaxAmt="1971.5149" Freight="616.0984" rowguid="00001111-2222-3333-4444-556677889900" ModifiedDate="2001-07-08 00:00:00.000" />
<Sales.SalesOrderDetail SalesOrderID="x" LineNumber="1" OrderQty="1" ProductID="776" SpecialOfferID="1" UnitPrice="2429.9928" UnitPriceDiscount="0.00" rowguid="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" ModifiedDate="2001-07-01 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
Pokud chcete vrátit hodnotu identity vygenerovanou atributem updg:at-identity , můžete použít updg:returnid atribut. Následující příklad je revidovaný aktualizační diagram, který vrací tuto hodnotu identity. (Tento aktualogram přidá dva záznamy objednávek a dva záznamy podrobností objednávky, aby byl příklad trochu složitější.)
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:before>
</updg:before>
<updg:after updg:returnid="x y">
<HumanResources.Shift updg:at-identity="x" Name="Day-Evening" StartTime="1900-01-01 11:00:00.000" EndTime="1900-01-01 19:00:00.000" ModifiedDate="2004-01-01 00:00:00.000" />
<HumanResources.Shift updg:at-identity="y" Name="Evening-Night" StartTime="1900-01-01 19:00:00.000" EndTime="1900-01-01 03:00:00.000" ModifiedDate="2004-01-01 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
Při spuštění aktualizačního diagramu vrátí výsledky podobné následujícímu příkladu, který obsahuje hodnotu identity (vygenerovanou hodnotu sloupce ShiftID použitého pro identitu tabulky), který se vygeneroval:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<returnid>
<x>4</x>
<y>5</y>
</returnid>
</ROOT>
Otestování ukázkového dotazu XPath na schématu
Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
Updategram-returnId.xml.Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění šablony.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
E. Použití atributu updg:guid k vygenerování jedinečné hodnoty
V tomto příkladu aktualizační diagram vloží záznam do tabulek Cust a CustOrder. Aktualgram také vygeneruje jedinečnou hodnotu atributu CustomerID pomocí atributu updg:guid .
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:before>
</updg:before>
<updg:after updg:returnid="x">
<Cust updg:guid="x">
<CustID>x</CustID>
<LastName>Fuller</LastName>
</Cust>
<CustOrder>
<CustID>x</CustID>
<OrderID>1</OrderID>
</CustOrder>
</updg:after>
</updg:sync>
</ROOT>
Aktualgram určuje returnid atribut. V důsledku toho se vrátí vygenerovaný identifikátor GUID:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<returnid>
<x>7111BD1A-7F0B-4CEE-B411-260DADFEFA2A</x>
</returnid>
</ROOT>
Test aktualizačního diagramu
Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
Updategram-GenerateGuid.xml.Vytvořte tyto tabulky:
USE tempdb; CREATE TABLE Cust ( CustID UNIQUEIDENTIFIER, LastName VARCHAR (20) ); CREATE TABLE CustOrder ( CustID UNIQUEIDENTIFIER, OrderID INT );Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění šablony.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
F. Zadání schématu v aktualgramu
Aktualgram v tomto příkladu vloží záznam do následující tabulky:
CustOrder(OrderID, EmployeeID, OrderType)
V tomto aktualgramu je zadáno schéma XSD (to znamená, že neexistuje žádné výchozí mapování elementů a atributů aktualgramu). Schéma poskytuje nezbytné mapování prvků a atributů na databázové tabulky a sloupce.
Následující schéma (CustOrderSchema.xml) popisuje <CustOrder> prvek, který se skládá z OrderID atributů EmployeeID . Aby bylo schéma zajímavější, je k atributu EmployeeID přiřazena výchozí hodnota. Aktualgram používá výchozí hodnotu atributu pouze pro operace vložení a pak pouze v případě, že aktualizační diagram tento atribut nezadá.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="CustOrder">
<xsd:complexType>
<xsd:attribute name="OrderID" type="xsd:integer" />
<xsd:attribute name="EmployeeID" type="xsd:integer" />
<xsd:attribute name="OrderType " type="xsd:integer" default="1" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Tento aktualizační diagram vloží záznam do tabulky CustOrder. Aktualgram určuje pouze hodnoty atributu OrderID a EmployeeID. Nezadá hodnotu atributu OrderType. Proto aktualgram používá výchozí hodnotu atributu EmployeeID, který je zadán v předchozím schématu.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema="CustOrderSchema.xml">
<updg:after>
<CustOrder OrderID="98000" EmployeeID="1" />
</updg:after>
</updg:sync>
</ROOT>
Další příklady aktualizačních diagramů, které určují schéma mapování, najdete v tématu Určení schématu mapování s poznámkami v aktualgramu (SQLXML 4.0).
Test aktualizačního diagramu
Vytvořte tuto tabulku v
tempdbdatabázi:USE tempdb; CREATE TABLE CustOrder ( OrderID INT, EmployeeID INT, OrderType INT );Zkopírujte předchozí schéma a vložte ho do textového souboru. Uložte soubor jako
CustOrderSchema.xml.Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
CustOrderUpdategram.xmlve stejné složce použité v předchozím kroku.Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění aktualizačního diagramu.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
Toto je ekvivalentní schéma XDR:
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="CustOrder">
<AttributeType name="OrderID" />
<AttributeType name="EmployeeID" />
<AttributeType name="OrderType" default="1" />
<attribute type="OrderID" />
<attribute type="EmployeeID" />
<attribute type="OrderType" />
</ElementType>
</Schema>
G. Vložení hodnot null do sloupce pomocí atributu xsi:nil
Pokud chcete vložit hodnotu null do odpovídajícího sloupce v tabulce, můžete zadat xsi:nil atribut prvku v aktualgramu. V odpovídajícím schématu XSD musí být zadán také atribut XSD nillable .
Představte si například toto schéma XSD:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Student" sql:relation="Students">
<xsd:complexType>
<xsd:all>
<xsd:element name="fname" sql:field="first_name" type="xsd:string" nillable="true" />
</xsd:all>
<xsd:attribute name="SID" sql:field="StudentID" type="xsd:ID" />
<xsd:attribute name="lname" sql:field="last_name" type="xsd:string" />
<xsd:attribute name="minitial" sql:field="middle_initial" type="xsd:string" />
<xsd:attribute name="years" sql:field="no_of_years" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Schéma XSD určuje nillable="true" prvek <fname> . Toto schéma používá následující aktualizační diagram:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" xmlns:updg="urn:schemas-microsoft-com:xml-updategram" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<updg:sync mapping-schema="StudentSchema.xml">
<updg:before />
<updg:after>
<Student SID="S00004" lname="Elmaci" minitial="" years="2">
<fname xsi:nil="true">
</fname>
</Student>
</updg:after>
</updg:sync>
</ROOT>
Aktualgram určuje xsi:nil prvek <fname> v <after> bloku. Proto při spuštění tohoto aktualgramu NULL je vložena hodnota pro first_name sloupec v tabulce.
Test aktualizačního diagramu
V databázi vytvořte následující tabulku
tempdb:USE tempdb; CREATE TABLE Students ( StudentID CHAR (6) NOT NULL, first_name VARCHAR (50), last_name VARCHAR (50), middle_initial CHAR (1), no_of_years INT NULL ); GOZkopírujte předchozí schéma a vložte ho do textového souboru. Uložte soubor jako
StudentSchema.xml.Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
StudentUpdategram.xmlve stejné složce použité v předchozím kroku k uloženíStudentSchema.xml.Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění aktualizačního diagramu.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
H. Určení oborů názvů v aktualgramu
V aktualgramu můžete mít prvky, které patří do oboru názvů deklarovaného ve stejném prvku v aktualgramu. V tomto případě musí odpovídající schéma také deklarovat stejný obor názvů a element musí patřit do tohoto cílového oboru názvů.
Například v následujícím aktualgramu (UpdateGram-ElementHavingNamespace.xml), <Order> element patří do oboru názvů deklarovaného v elementu.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema="XSD-ElementHavingNameSpace.xml">
<updg:after>
<x:Order xmlns:x="https://server/xyz/schemas/" updg:at-identity="SalesOrderID" RevisionNumber="1" OrderDate="2001-07-01 00:00:00.000" DueDate="2001-07-13 00:00:00.000" OnlineOrderFlag="0" CustomerID="676" ContactID="378" BillToAddressID="985" ShipToAddressID="985" ShipMethodID="5" SubTotal="24643.9362" TaxAmt="1971.5149" Freight="616.0984" rowguid="00009999-8888-7777-6666-554433221100" ModifiedDate="2001-07-08 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
V tomto případě musí schéma deklarovat také obor názvů, jak je znázorněno v tomto schématu:
Následující schéma (XSD-ElementHavingNamespace.xml) ukazuje, jak musí být deklarován odpovídající prvek a atributy.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" xmlns:x="https://server/xyz/schemas/" targetNamespace="https://server/xyz/schemas/">
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader" type="x:Order_type" />
<xsd:complexType name="Order_type">
<xsd:attribute name="SalesOrderID" type="xsd:ID" />
<xsd:attribute name="RevisionNumber" type="xsd:unsignedByte" />
<xsd:attribute name="OrderDate" type="xsd:dateTime" />
<xsd:attribute name="DueDate" type="xsd:dateTime" />
<xsd:attribute name="ShipDate" type="xsd:dateTime" />
<xsd:attribute name="Status" type="xsd:unsignedByte" />
<xsd:attribute name="OnlineOrderFlag" type="xsd:boolean" />
<xsd:attribute name="SalesOrderNumber" type="xsd:string" />
<xsd:attribute name="PurchaseOrderNumber" type="xsd:string" />
<xsd:attribute name="AccountNumber" type="xsd:string" />
<xsd:attribute name="CustomerID" type="xsd:int" />
<xsd:attribute name="ContactID" type="xsd:int" />
<xsd:attribute name="SalesPersonID" type="xsd:int" />
<xsd:attribute name="TerritoryID" type="xsd:int" />
<xsd:attribute name="BillToAddressID" type="xsd:int" />
<xsd:attribute name="ShipToAddressID" type="xsd:int" />
<xsd:attribute name="ShipMethodID" type="xsd:int" />
<xsd:attribute name="CreditCardID" type="xsd:int" />
<xsd:attribute name="CreditCardApprovalCode" type="xsd:string" />
<xsd:attribute name="CurrencyRateID" type="xsd:int" />
<xsd:attribute name="SubTotal" type="xsd:decimal" />
<xsd:attribute name="TaxAmt" type="xsd:decimal" />
<xsd:attribute name="Freight" type="xsd:decimal" />
<xsd:attribute name="TotalDue" type="xsd:decimal" />
<xsd:attribute name="Comment" type="xsd:string" />
<xsd:attribute name="rowguid" type="xsd:string" />
<xsd:attribute name="ModifiedDate" type="xsd:dateTime" />
</xsd:complexType>
</xsd:schema>
Test aktualizačního diagramu
Zkopírujte předchozí schéma a vložte ho do textového souboru. Uložte soubor jako
XSD-ElementHavingNamespace.xml.Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
Updategram-ElementHavingNamespace.xmlve stejné složce použité k uloženíXSD-ElementHavingnamespace.xml.Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění aktualizačního diagramu.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
I. Vložení dat do sloupce datového typu XML
Pomocí aktualgramů můžete vkládat a aktualizovat data uložená ve sloupcích datového typu XML s následujícími aspekty:
Sloupec XML nelze použít k identifikaci existujícího řádku. Proto ho nelze zahrnout do
updg:beforečásti aktualizačního diagramu.Obory názvů, které jsou v oboru fragmentu XML vloženého do sloupce XML , se zachovají a jejich deklarace oboru názvů se přidají do horního prvku vloženého fragmentu.
Například v následujícím aktualogramu (SampleUpdateGram.xml) <Desc> element aktualizuje sloupec ProductDescription v tabulce Production>productModel v AdventureWorks2025 ukázkové databázi. Výsledkem tohoto aktualgramu je, že obsah XML sloupce ProductDescription se aktualizuje obsahem XML elementu <Desc> .
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema="SampleSchema.xml">
<updg:before>
<ProductModel ProductModelID="19">
<Name>Mountain-100</Name>
</ProductModel>
</updg:before>
<updg:after>
<ProductModel>
<Name>Mountain-100</Name>
<Desc>
<?xml href="ProductDescription.xsl" type="text/xsl" e="text/xsl"?>
<p1:ProductDescription xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" xmlns:wm="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" xmlns:wf="https://www.adventure-works.com/schemas/OtherFeatures" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="">
<p1:Summary>
<html:p>Insert Example</html:p>
</p1:Summary>
<p1:Manufacturer>
<p1:Name>AdventureWorks</p1:Name>
<p1:Copyright>2002</p1:Copyright>
<p1:ProductURL>HTTP://www.Adventure-works.com</p1:ProductURL>
</p1:Manufacturer>
<p1:Features>
These are the product highlights.
<wm:Warranty>
<wm:WarrantyPeriod>3 years</wm:WarrantyPeriod>
<wm:Description>parts and labor</wm:Description>
</wm:Warranty>
<wm:Maintenance>
<wm:NoOfYears>10 years</wm:NoOfYears>
<wm:Description>maintenance contract available through your dealer or any AdventureWorks retail store.</wm:Description>
</wm:Maintenance>
<wf:wheel>High performance wheels.</wf:wheel>
<wf:saddle>
<html:i>Anatomic design</html:i>
and made from durable leather for a full-day of riding in comfort.
</wf:saddle>
<wf:pedal>
<html:b>Top-of-the-line</html:b>
clipless pedals with adjustable tension.
</wf:pedal>
<wf:BikeFrame>Each frame is hand-crafted in our Bothell facility to the optimum diameter and wall-thickness required of a premium mountain frame. The heat-treated welded aluminum frame has a larger diameter tube that absorbs the bumps.</wf:BikeFrame>
<wf:crankset> Triple crankset; aluminum crank arm; flawless shifting. </wf:crankset>
</p1:Features>
<p1:Picture>
<p1:Angle>front</p1:Angle>
<p1:Size>small</p1:Size>
<p1:ProductPhotoID>118</p1:ProductPhotoID>
</p1:Picture>
<p1:Specifications>
These are the product specifications.
<Material>Aluminum Alloy</Material>
<Color>Available in most colors</Color>
<ProductLine>Mountain bike</ProductLine>
<Style>Unisex</Style>
<RiderExperience>Advanced to Professional riders</RiderExperience>
</p1:Specifications>
</p1:ProductDescription>
</Desc>
</ProductModel>
</updg:after>
</updg:sync>
</ROOT>
Aktualgram odkazuje na následující anotované schéma XSD (SampleSchema.xml).
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
<xsd:element name="ProductModel" sql:relation="Production.ProductModel">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"></xsd:element>
<xsd:element name="Desc" sql:field="CatalogDescription" sql:datatype="xml">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ProductDescription">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Summary" type="xsd:anyType">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="ProductModelID" sql:field="ProductModelID" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Test aktualizačního diagramu
Zkopírujte předchozí schéma a vložte ho do textového souboru. Uložte soubor jako
XSD-SampleSchema.xml.Poznámka:
Vzhledem k tomu, že updategramy podporují výchozí mapování, neexistuje způsob, jak identifikovat začátek a konec datového typu XML . To znamená, že při vkládání nebo aktualizaci tabulek pomocí sloupců datového typu XML se vyžaduje schéma mapování. Pokud schéma není zadané, vrátí SQLXML chybu, která značí, že v tabulce chybí jeden ze sloupců.
Zkopírujte předchozí aktualizační diagram a vložte ho do textového souboru. Uložte soubor jako
SampleUpdategram.xmlve stejné složce použité k uloženíSampleSchema.xml.Vytvořte a použijte testovací skript SQLXML 4.0 (
Sqlxml4test.vbs) ke spuštění aktualizačního diagramu.Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.