Udostępnij za pośrednictwem


Wstawianie danych XML Updategrams (SQLXML 4.0)

Wierzchołki wskazuje operację wstawiania wystąpienie rekordu pojawiają się w <after> blok, ale nie w odpowiednich <before> blok.W takim przypadek wierzchołki wstawia rekordu w <after> blok do bazy danych.

Jest to format wierzchołki dla operacji wstawiania:

<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>

&lt;przed&gt; bloku

<before> Można pominąć blok dla operacji wstawiania.Jeśli opcjonalna mapping-schema atrybut nie jest określony, <ElementName> określona w diagramach aktualizacji map do tabela bazy danych i podrzędność elementów lub atrybutów mapy do kolumn w tabela.

&lt;Po&gt; bloku

Można określić jeden lub więcej rekordów w <after> blok.

Jeśli <after> blok nie dostarcza wartość dla określonej kolumna, wierzchołki używa wartości domyślnej, określonej w schemacie adnotacjami (jeśli został określony schemat).If the schema does not specify a default value for the column, the updategram does not specify any explicit value to this column and, instead, assigns the Microsoft SQL Server default value (if specified) to this column.Jeśli nie ma żadnych SQL Server wartość domyślna i kolumna akceptuje wartości NULL, wierzchołki ustawia wartość kolumna NULL.Jeśli kolumna ma wartość domyślną ani akceptuje wartości NULL, polecenia i wierzchołki zwraca błąd.Opcjonalna updg:returnid atrybut jest używany do zwracania wartości tożsamości generowany przez system podczas dodawania rekordu w tabela zawierającej kolumna typu tożsamości.

Atrybut updg:ID

Jeśli wstawienie tylko rekordy wierzchołki wierzchołki nie wymaga updg:id atrybut.Więcej informacji o updg:id, zobacz Aktualizowanie danych za pomocą XML Updategrams (SQLXML 4.0).

updg: atrybut na tożsamości

Wstawianych wierzchołki rekordu w tabela zawierającej kolumna tożsamości typu, wierzchołki można przechwycić system przypisane wartości przy użyciu opcjonalnej updg:at-identity atrybut.Wierzchołki można następnie użyć tej wartości w następnych operacjach.Na wykonanie wierzchołki, można zwrócić wartość tożsamości, generowany przez określanie updg:returnid atrybut.

Atrybut updg:GUID

updg:guid Atrybut jest opcjonalny atrybut, który generuje unikatowy identyfikator globalny.Wartość ta pozostaje w zakres dla całego <sync> zablokować, w którym określono.Można użyć tej wartości, gdziekolwiek w <sync> blok.The attribute calls the NEWGUID() SQL Server function to generate the unique identifier.

Przykłady

Aby utworzyć próbki pracy przy użyciu poniższych przykładach, muszą spełniać wymagania określone w Wymagania dotyczące uruchamianie przykładów SQLXML.

Przed użyciem przykłady wierzchołki Uwaga:

Większość przykładów używania AdventureWorks2008R2 przykładowej bazy danych.Wszystkie aktualizacje są stosowane do tabel w bazie danych.Możesz przywracanie AdventureWorks2008R2 bazy danych.Aby uzyskać informacje dotyczące przywracania AdventureWorks2008R2 bazy danych, zobacz Przykładowe bazy danych AdventureWorks2008R2.

A.Wstawienie rekordu za pomocą wierzchołki

Ten zorientowany atrybut wierzchołki wstawia rekordu w tabela HumanResources.Employee w AdventureWorks2008R2 bazy danych.

W tym przykładzie wierzchołki nie określono schematu mapowania.Dlatego wierzchołki używa domyślnego mapowania, w którym nazwa elementu mapuje nazwę tabela i atrybuty lub mapowania elementów podrzędność do kolumn w tabela.

AdventureWorks2008R2 Nakłada schemat tabela HumanResources.Employee "not null" ograniczenie dotyczące wszystkich kolumn z wyjątkiem OrganizationNode i OrganizationLevel.Dlatego wierzchołki musi zawierać wartości określone dla wszystkich kolumn, ale te dwie kolumny.Typ tożsamości jest BusinessEntityID kolumna.Dlatego nie wartości są określone dla niego.

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
  <updg:sync >
    <updg:before>
    </updg:before>
    <updg:after>
       <HumanResources.Employee 
            NationalIDNumber="111111111" 
            BusinessEntityID="128" 
            LoginID="adventure-works\paulw0"
            DepartmentID="7" 
            ShiftID="3" 
            JobTitle="Production Technician - WC40"
            EmergencyContactID="1445" 
            AddressID="157"   
            BirthDate="1974-12-15 00:00:00.000"
            MaritalStatus="S" 
            Gender="M" 
            HireDate="2003-01-05 00:00:00.000"
            SalariedFlag="0" 
            BaseRate="15.00"
            PayFrequency="1" 
            VacationHours="80" 
            SickLeaveHours="80" 
            CurrentFlag="1" 
            rowguid="00001111-2222-3333-4444-555566667777"
            ModifiedDate="2008-7-31 00:00:00.000"/>
    </updg:after>
  </updg:sync>
</ROOT>

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako MyUpdategram.xml.

  2. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

W mapowaniu zorientowany na element wierzchołki wygląda następująco:

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
  <updg:sync >
    <updg:before>
    </updg:before>
    <updg:after>
       <HumanResources.Employee>
            <NationalIDNumber>111111111</NationalIDNumber>
            <BusinessEntityID>128</BusinessEntityID>
            <LoginID>adventure-works\paulw0</LoginID>
            <DepartmentID>7</DepartmentID>
            <ShiftID>3</ShiftID>
            <JobTitle>Production Technician - WC40</JobTitle>
            <EmergencyContactID>1445</EmergencyContactID>
            <AddressID>157</AddressID>
            <BirthDate>1974-12-15 00:00:00.000</BirthDate>
            <MaritalStatus>S</MaritalStatus>
            <Gender>M</Gender>
            <HireDate>2003-01-05 00:00:00.000</HireDate>
            <SalariedFlag>0</SalariedFlag>
            <BaseRate>15.00</BaseRate>
            <PayFrequency>1</PayFrequency>
            <VacationHours>80</VacationHours>
            <SickLeaveHours>80</SickLeaveHours>
            <CurrentFlag>1</CurrentFlag>
            <rowguid>00001111-2222-3333-4444-555566667777</rowguid>
            <ModifiedDate>2008-7-31 00:00:00.000</ModifiedDate>
       </HumanResources.Employee>
    </updg:after>
  </updg:sync>
</ROOT>

W trybie mieszanym (zorientowany na element i zorientowany atrybut) wierzchołki element może mieć atrybuty i podelementy, jak pokazano w tym wierzchołki:

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
  <updg:sync >
    <updg:before>
    </updg:before>
    <updg:after>
       <HumanResources.Employee 
            NationalIDNumber="111111111" 
            BusinessEntityID="128" 
            DepartmentID="7" 
            ShiftID="3" 
            EmergencyContactID="1445" 
            AddressID="157"   
            SalariedFlag="0" 
            BaseRate="15.00"
            PayFrequency="1" 
            VacationHours="80" 
            SickLeaveHours="80" 
            CurrentFlag="1">
            <LoginID>adventure-works\paulw0</LoginID>
            <JobTitle>Production Technician - WC40</JobTitle>
            <BirthDate>1974-12-15 00:00:00.000</BirthDate>
            <HireDate>2003-01-05 00:00:00.000</HireDate>
            <MaritalStatus>S</MaritalStatus>
            <Gender>M</Gender>
            <rowguid>00001111-2222-3333-4444-555566667777</rowguid>
            <ModifiedDate>2008-7-31 00:00:00.000</ModifiedDate>
       </HumanResources.Employee>
    </updg:after>
  </updg:sync>
</ROOT>

B.Wstawianie wielu rekordów przy użyciu wierzchołki

Wierzchołki to dodaje dwa nowe rekordy shift do tabela HumanResources.Shift.Wierzchołki nie określa opcjonalny <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>

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako AddShifts.xml wierzchołki.

  2. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Inna wersja tego przykładu jest wierzchołki, który używa dwóch odrębnych <after> bloków, zamiast jednego blok wstawić dwóch pracowników.To jest prawidłowy i mogą być kodowane następująco:

<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.Praca z prawidłowych znaków programu SQL Server, które nie są prawidłowe w formacie XML

W SQL Server, nazwy tabela może zawierać spacji, na przykład tabela Szczegóły zamówień w bazie danych Northwind.Jednak nie jest to ważne w znaki XML, które są prawidłowe SQL Server identyfikatorów, ale nie jest prawidłowe identyfikatory XML może być zakodowany, za pomocą "xHHHH" jako wartość kodowania, gdzie GG oznacza czterocyfrowy UCS-2 kodu szesnastkowego znaku w najbardziej znaczący bit pierwszego zamówienia.

Ostrzeżenie

W tym przykładzie użyto bazie Northwind najpierw dostarczony razem z SQL Server 2000 jako przykładowe bazy danych.Baza danych Northwind nie jest wyposażony w nowszych wersjach SQL Server.Można jednak zainstalować bazę danych Northwind przy użyciu skryptu SQL są dostępne do pobrania.Aby uzyskać więcej informacji, zobacz Pobieranie Northwind i pubs przykładowe bazy danych.

Ponadto nazwy elementu musi być ujęty w nawiasy kwadratowe ([]).Ponieważ znaki [i] są nieprawidłowe w formacie XML, można zakodować je jako x005B i x005D, odpowiednio.(Jeżeli używasz schematu mapowania można podać nazwy elementów, które nie zawierają znaki, które nie są prawidłowe, takich jak spacji.Mapowanie schematu jest niezbędne mapowanie; dlatego nie należy do kodowania dla tych znaków).

Wierzchołki to dodaje rekord do tabela Szczegóły zamówienia w bazie danych 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>

CenaJednostkowa kolumna w tabela Szczegóły zamówień jest money typu.Aby zastosować odpowiedni typ konwersji (z string Typ money typu), znak dolara ($), muszą zostać dodane jako część wartości.Jeśli wierzchołki nie określono mapowania schematu, pierwszego znaku string wartość jest wyznaczana.Jeśli pierwszy znak jest znak dolara ($), stosowany jest właściwe konwersji.

Jeśli określono wierzchołki schematem mapowania, gdzie kolumna jest odpowiednio oznaczony jako dt:type="fixed.14.4" lub sql:datatype="money", nie wymaga się znak dolara ($) i konwersji jest obsługiwane przez mapowanie.Jest zalecanym sposobem zapewnienia, że występuje odpowiedni typ konwersji.

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako UpdategramSpacesInTableName.xml.

  2. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

D.Pobrać wartości, który został wstawiony kolumna Typ tożsamości za pomocą atrybut w tożsamości

Następujące wierzchołki wstawia dwa rekordy: jedna w tabela Sales.SalesOrderHeader, a drugi w tabela Sales.SalesOrderDetail.

Po pierwsze wierzchołki dodaje rekord w tabela Sales.SalesOrderHeader.W tej tabela kolumna SalesOrderID jest kolumną typu tożsamości.Dlatego po dodaniu tego rekordu do tabela używa wierzchołki at-identity atrybut do przechwytywania przypisaną wartość SalesOrderID jako "x" (wartość zastępczego).To określa następnie updategam at-identity zmienną jako wartość atrybut SalesOrderID w <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"
             BillToAddressID="985"
             ShipToAddressID="985"
             ShipMethodID="5"
             SubTotal="24643.9362"
             TaxAmt="1971.5149"
             Freight="616.0984"
             rowguid="00001111-2222-3333-4444-556677889900"
             ModifiedDate="2005-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="2005-07-01 00:00:00.000" />
    </updg:after>
  </updg:sync>
</ROOT>

Jeżeli chcesz przywrócić wartości tożsamości generowany przez updg:at-identity atrybut, można użyć updg:returnid atrybutu.Oto poprawioną wierzchołki, zwracającą wartość tej tożsamości.(Ta wierzchołki dodaje dwa rekordy zamówień i dwa rekordy szczegółów zamówienia, tak aby przykłady nieco bardziej skomplikowane.)

<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>

Po wykonaniu wierzchołki zwraca wyniki podobne do następujących, który zawiera wartość tożsamości (wygenerowaną wartość kolumna ShiftID używanej tabela tożsamości) został wygenerowany:

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"> 
  <returnid> 
    <x>4</x> 
    <y>5</y> 
  </returnid> 
</ROOT>

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako returnId.xml wierzchołki.

  2. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

E.Aby generować unikatową wartość za pomocą atrybut updg:guid

W tym przykładzie wierzchołki wstawia rekordu w tabeli Nabywca i CustOrder.Ponadto wierzchołki generuje unikatową wartość atrybut IDKlienta za pomocą updg:guid atrybut.

<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>

Określa wierzchołki returnid atrybut.Identyfikator GUID, który jest generowany jest zwracany w wyniku:

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
  <returnid>
    <x>7111BD1A-7F0B-4CEE-B411-260DADFEFA2A</x> 
  </returnid>
</ROOT>

Aby przetestować wierzchołki

  1. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako GenerateGuid.xml wierzchołki.

  2. Tworzenie tych tabel:

    USE tempdb
    CREATE TABLE Cust (CustID uniqueidentifier, LastName varchar(20))
    CREATE TABLE CustOrder (CustID uniqueidentifier, OrderID int)
    
  3. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

F.Określanie schematu w diagramach aktualizacji

Wierzchołki w tym przykładzie wstawia rekordu w tabela poniżej:

CustOrder(OrderID, BusinessEntityID, OrderType)

W tym wierzchołki określono schematu XSD (oznacza to, że brak domyślnego mapowania wierzchołki elementów i atrybutów).Schemat zawiera niezbędne mapowanie elementów i atrybutów bazy danych, tabel i kolumn.

Zawiera opis następującego schematu (CustOrderSchema.xml) <CustOrder> element, który składa się z IDZamówienia i BusinessEntityID atrybuty.Aby schematu bardziej interesujące, wartość domyślna jest przypisany do BusinessEntityID atrybut.Wierzchołki wykorzystuje wartość domyślna atrybut tylko dla operacji wstawiania, a następnie tylko wtedy, gdy wierzchołki nie określono tego atrybut.

<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="BusinessEntityID"  type="xsd:integer" />
        <xsd:attribute name="OrderType  " type="xsd:integer" default="1"/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Wierzchołki to wstawia rekordu do tabela CustOrder.Wierzchołki określa tylko IDZamówienia i BusinessEntityID wartości atrybut.Określa wartość atrybut OrderType.Dlatego wierzchołki używa domyślnej wartości atrybut BusinessEntityID, określonego w poprzednim schematu.

<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" BusinessEntityID="1" />
</updg:after>
</updg:sync>
</ROOT>

Więcej przykładów updategrams określony schemat mapowania, zobacz Określanie adnotacjami schematu mapowanie w diagramach aktualizacji (SQLXML 4.0).

Aby przetestować wierzchołki

  1. Tworzenie tabela w tempdb bazy danych:

    USE tempdb
    CREATE TABLE CustOrder(
                     OrderID int, 
                     BusinessEntityID int, 
                     OrderType int)
    
  2. Powyższy schemat skopiować i wkleić go do pliku tekstowego.Zapisz plik jako CustOrderSchema.xml.

  3. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako CustOrderUpdategram.xml w tym samym folderze, w poprzednim kroku.

  4. Tworzenie i używanie wierzchołki wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Jest to równoważne schematu 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="BusinessEntityID" />
    <AttributeType name="OrderType" default="1" />
    <attribute type="OrderID"  />
    <attribute type="BusinessEntityID" />
    <attribute type="OrderType" />
  </ElementType>
</Schema>

G.Aby wstawić wartości null kolumna przy użyciu atrybut xsi: nil

Jeśli chcesz wstawić wartość null w odpowiadających im kolumna w tabela, można określić xsi:nil atrybut element wierzchołki.W odpowiednich schematu XSD XSD nillable także musi zostać określony atrybut.

Rozważmy na przykład tego schematu 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>

Określa schematu XSD nillable="true" dla <fname> elementu.Następujące wierzchołki używa tego schematu:

<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>

Określa wierzchołki xsi:nil dla <fname> element <after> blok.Dlatego podczas wykonywania tego wierzchołki wartość NULL jest wstawiany imię kolumna w tabela.

Aby przetestować wierzchołki

  1. Utwórz następującą tabela w tempdb bazy danych:

    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)
    GO
    
  2. Powyższy schemat skopiować i wkleić go do pliku tekstowego.Zapisz plik jako StudentSchema.xml.

  3. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako StudentUpdategram.xml w tym samym folderze, używane w poprzednim kroku, aby zapisać StudentSchema.xml.

  4. Tworzenie i używanie wierzchołki wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

H.Określanie nazw w diagramach aktualizacji

Wierzchołki mogą mieć elementy należące do obszaru nazw zadeklarowany w tym samym elemencie w diagramach aktualizacji.W takim przypadek odpowiedni schemat musi również zadeklarować tych samych nazw i element musi należeć do tej miejsce docelowe obszaru nazw.

Na przykład w następującym wierzchołki (wierzchołki-ElementHavingNamespace.xml) <zamówienia> element należy do obszaru nazw zadeklarowane w elemencie.

<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="2005-07-01 00:00:00.000"
             DueDate="2005-07-13 00:00:00.000"
             OnlineOrderFlag="0"
             CustomerID="676"
             BillToAddressID="985"
             ShipToAddressID="985"
             ShipMethodID="5"
             SubTotal="24643.9362"
             TaxAmt="1971.5149"
             Freight="616.0984"
             rowguid="00009999-8888-7777-6666-554433221100"
             ModifiedDate="2005-07-08 00:00:00.000" />
    </updg:after>
  </updg:sync>
</ROOT>

W takim przypadek schematu musi również zadeklarować obszaru nazw, jak pokazano w tym schemacie:

Następującego schematu (XSD ElementHavingNamespace.xml) pokazuje, jak należy zadeklarować odpowiedni element i atrybuty.

<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="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>

Aby przetestować wierzchołki

  1. Powyższy schemat skopiować i wkleić go do pliku tekstowego.Zapisz plik jako XSD ElementHavingNamespace.xml.

  2. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako ElementHavingNamespace.xml wierzchołki w tym samym folderze, używany do zapisywania XSD ElementHavingnamespace.xml.

  3. Tworzenie i używanie wierzchołki wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

I.Wstawianie danych do danych XML typu kolumna

xml Typ danych został wprowadzony w SQL Server 2005.Updategrams można używać do wstawiania i aktualizacji danych przechowywanych w xml Typ danych kolumny z następującymi przepisami:

  • xml Nie można użyć kolumna identyfikacji istniejących wierszy.Dlatego nie można umieszczać w updg:before sekcji wierzchołki.

  • Obszary nazw w zakres wstawiony fragment XML xml kolumna zostaną zachowane i ich deklaracje obszaru nazw są dodawane do najwyższego elementu wstawiony fragment.

Na przykład w następującym wierzchołki (SampleUpdateGram.xml) <Desc> element aktualizuje kolumna ProductDescription w produkcji>tabela productModel w AdventureWorks2008R2 przykładowej bazy danych.Wynik tego wierzchołki są zawartości XML kolumna ProductDescription aktualizację z zawartością XML <Desc> elementu.

<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-stylesheet href="ProductDescription.xsl" type="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" 
              >
  <p1:Summary>
     <html:p>Insert Example</html:p>
  </p1:Summary>
  <p1:Manufacturer>
    <p1:Name>AdventureWorks2008R2</p1:Name>
    <p1:Copyright>2006</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 Adventure Works 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; alumunim 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>Almuminum 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>

Wierzchołki odnosi się do następującego schematu XSD adnotacjami (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="https://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>

Aby przetestować wierzchołki

  1. Powyższy schemat skopiować i wkleić go do pliku tekstowego.Zapisz plik jako XSD SampleSchema.xml.

    Ostrzeżenie

    Ponieważ updategrams domyślnego mapowania, jest sposobem identyfikowania początek i koniec xml typu danych.Oznacza to skutecznie, schemat mapowanie jest wymagane, podczas wstawiania lub aktualizowania tabel z xml Typ danych kolumny.Schematu nie został dostarczony, SQLXML zwraca błąd wskazujący, że brak jednego z kolumn z tabela.

  2. Wierzchołki powyżej skopiować i wkleić go do pliku tekstowego.Zapisz plik jako SampleUpdategram.xml w tym samym folderze, używany do zapisywania SampleSchema.xml.

  3. Tworzenie i używanie wierzchołki wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.