Aracılığıyla paylaş


xml Updategram'lar (SQLxml 4.0) kullanarak veri ekleme

Kayıt örnek görünür bir updategram ekleme işlemi gösterir <after> blok, ancak karşılık gelen <before> blok.Bu durum, kayıtta updategram ekler <after> blok halinde veritabanı.

Bu ekleme işlemi için updategram biçimidir:

<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;önce&gt; Blok

The <before> block can be omitted for an insert operation.İsteğe bağlı mapping-schema öznitelik belirtilmişse, <ElementName> bir veritabanı tablosu ve alt öðeler ya da öznitelikler eşleme sütun tablo. updategram eşlemelerindeki belirtilen

&lt;sonra&gt; Blok

Bir veya daha fazla kayıtları belirttiğiniz <after> blok.

If the <after> block does not supply a value for a particular column, the updategram uses the default value that is specified in the annotated schema (if a schema has been specified).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.Yoksa hiç SQL Server Varsayılan değer ve sütun null değeri kabul eder, updategram ayarlar sütun değeri null.sütun Bir varsayılan değere sahip veya null değeri, komut başarısız kabul eder ve updategram bir hata döndürür.İsteğe bağlı updg:returnid öznitelik, bir kayıt eklendiğinde, sistem tarafından oluşturulan kimlik değerini döndürmek için kullanılan bir tablo ile bir kimlik türü sütun.

updg:id özniteliği

Updategram yalnızca kayıtları eklediği, updategram gerek duymuyorsanız updg:id öznitelik.Hakkında daha fazla bilgi için updg:id, bkz: xml Updategram'lar (SQLxml 4.0) kullanarak veri güncelleştirme.

updg: at kimlik özniteliği

Ne zaman bir updategram ekler bir kayıtta bir tablo , bir kimlik sütunu varsa, updategram kullanarak isteğe bağlı sistem atanan değeri yakalayabilirsiniz updg:at-identity öznitelik.Updategram, daha sonra bu değeri sonraki işlemlerde kullanabilirsiniz.Updategram yürütme belirterek oluşturulan kimlik değeri dönmek updg:returnid öznitelik.

updg:guid özniteliği

The updg:guid attribute is an optional attribute that generates a globally unique identifier.Bu değer için tüm kapsam içinde kalır <sync> blok içinde olduğu belirtilir.Bu değeri her yerde kullanabilirsiniz <sync> blok.The attribute calls the NEWGUID() SQL Server function to generate the unique identifier.

Örnekler

Aşağıdaki örnekler kullanarak çalışma örnekleri oluşturmak için belirtilen gereksinimleri karşılamalıdır SQLxml örnekleri çalıştırma gereksinimleri.

Updategram örnekler kullanmadan önce aşağıdaki dikkat edin:

Çoğunlukla örnekler, AdventureWorks2008R2 örnek veritabanı.Tüm güncelleştirmeler bu veritabanındaki tablolara uygulanır.geri yükleme yükleyebilirsiniz AdventureWorks2008R2 veritabanı.Geri yükleme hakkında bilgi için AdventureWorks2008R2 , veritabanı Bkz: AdventureWorks2008R2 örnek veritabanları.

A.Bir updategram kullanarak bir kayıt ekleme

Bu öznitelik merkezli updategram HumanResources.Employee içinde bir kayıt ekler tablo , AdventureWorks2008R2 veritabanı.

Bu örnekte updategram eşleme şema belirtin.Bu nedenle, updategram öğe adı tablo adı öznitelikleri veya bu tablodaki sütunlar için alt öğeleri eşleme eşlemelerini varsayılan eşlemeyi kullanır.

The AdventureWorks2008R2 schema for the HumanResources.Employee table imposes a 'not null' restriction on all columns except OrganizationNode, and OrganizationLevel.Bu nedenle, updategram tüm sütunlar, ancak bu iki sütunu için belirtilen değerler içermelidir.BusinessEntityID bir tür kimlik sütun.Bu nedenle, hiçbir değer için belirtilir.

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

Örnek XPath sorgusu şema karşı sınamak için

  1. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Dosyayı MyUpdategram.xml kaydedin.

  2. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

Bir öğe merkezli eşleme updategram şuna benzer:

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

Bir karma mod (öğe merkezli ve öznitelik merkezli) updategram içinde bir öðenin öznitelikleri ve alt öğeleri, hem bu updategram içinde gösterildiği gibi olabilir:

<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.Birden çok kayıt bir updategram kullanarak eklemeyi

Bu updategram HumanResources.Shift tablo iki yeni shift kaydı ekler.İsteğe bağlı bir updategram belirtme <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>

Örnek XPath sorgusu şema karşı sınamak için

  1. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Dosyayı Updategram AddShifts.xml kaydedin.

  2. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

Bu örnek başka bir sürüm kullanan iki ayrı bir updategram olan <after> bloklar yerine bir blok ekleme iki çalışanlar.Bu geçerlidir ve aşağıdaki gibi kodlanabilir:

<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.XML'de geçerli olmayan geçerli sql Server karakterlerle çalışma

De SQL Server, tablo adları, Sipariş Ayrıntıları tablosunda gibi bir alan içerebilirNorthwind veritabanını. Ancak, bu geçersiz xml karakterler geçerli değil SQL Server tanımlayıcıları ancak geçersiz xml tanıtıcıları kodlanmış kullanarak 'xHHHH' Burada en önemli bit ilk sırada karakter için dört basamaklı onaltılık ucs-2 kod SSSS gösterir kodlama değeri.

Not

Bu örnekte ilk ile sağlanan Northwind veritabanını kullanır SQL Server 2000 olarak bir örnek veritabanı.Northwind veritabanını daha sonraki sürümleriyle birlikte sağlanan SQL Server.Ancak, Northwind veritabanını karşıdan yükleme için bir sql kodu kullanarak yükleyebilirsiniz.Daha fazla bilgi için bkz: Northwind ve pubs örnek veritabanları karşıdan yükleniyor.

Ayrıca, öğe adı köşeli ayraçlar ([]) alınmalıdır.Karakter [ve] XML'de geçerli olmayan öğeler, siz bunları x005B ve x005D, sırasıyla kodlamak gerekir çünkü.(Eşleme şema kullanırsanız, boşluk gibi geçerli olmayan karakterler içeren öğe adları sağlayabilirsiniz.Eşleme şema gerekli eşleştirme yapar; Bu nedenle, bu karakterler için kodlama gerek yoktur).

Bu updategram Sipariş Ayrıntıları bir kayıt ekler tablo Northwind veritabanındaki:

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

Sipariş ayrıntılarını BirimFiyat sütununda tablo biri olan money türü.Uygun tür dönüştürmesi uygulamak için (gelen bir string için yazın bir money türü), dolar işareti karakteriyle ($) değeri.'in bir parçası olarak eklenmiş olmasıUpdategram eşleme şema, ilk karakteri belirtin, string değeri değerlendirildi.İlk karakteri bir dolar işareti ($) ise, uygun dönüştürme uygulanır.

Burada sütun uygun şekilde işaretlenmiş olarak bir eşleme şema karşı updategram belirtilirse, dt:type="fixed.14.4" veya sql:datatype="money", dolar işareti ($) gerekli değildir ve dönüştürme tarafından gerçekleştirilireşleme. Uygun türü dönüştürme oluştuğunu emin olmak için önerilen yoldur.

Örnek XPath sorgusu şema karşı sınamak için

  1. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Dosyayı UpdategramSpacesInTableName.xml kaydedin.

  2. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

D.KİMLİK türü eklenen değerini almak için adresindeki kimlik öznitelik kullanılaraksütun

İki kaydı aşağıdaki updategram ekler: Tablo Sales.SalesOrderHeader ve Sales.SalesOrderDetail tablosundaki bir başka biri.

İlk olarak, updategram Sales.SalesOrderHeader tablo için bir kayıt ekler.Bu tablo, SalesOrderID kimlik türü sütunu sütun.Bu nedenle eklediğinizde, bu kayda tablo, updategram kullanır at-identity "x" olarak atanan SalesOrderID değeri yakalamak için öznitelik (bir yer tutucu değeri).Updategam sonra bu belirtir at-identity değişken değeri SalesOrderID olarak öznitelik , <Sales.SalesOrderDetail> öğesi.

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

Tarafından oluşturulan kimlik değerini döndürmek istediğiniz updg:at-identity özniteliğini kullanarak updg:returnid öznitelik.Bu kimlik deerini döndürür gözden geçirilmiş bir updategram aşağıdadır.(İki sipariş kayıtları ve örnek yalnızca biraz daha karmaşık hale getirmek için iki sipariş ayrıntı kayıtları, bu updategram ekler.)

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

Updategram çalıştırıldığında sonuçlar oluşturulan kimlik değeri (oluşturulan tablo kimliği için kullanılan ShiftID sütun) içeren aşağıdakine benzer döndürdüğü:

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

Örnek XPath sorgusu şema karşı sınamak için

  1. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Dosyayı Updategram returnId.xml kaydedin.

  2. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

E.Updg:guid öznitelik benzersiz bir değer üretmek için kullanma

Bu örnekte updategram Müş ve CustOrder tablo içindeki bir kayıt ekler.Ayrıca, updategram kullanarak MüşteriNo öznitelik için benzersiz bir değer oluşturur updg:guid öznitelik.

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

Updategram belirtir returnid öznitelik.Sonuç olarak, oluşturulan GUID verilir:

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

Updategram sınamak için

  1. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Dosyayı Updategram GenerateGuid.xml kaydedin.

  2. Bu tablolar oluşturun:

    USE tempdb
    CREATE TABLE Cust (CustID uniqueidentifier, LastName varchar(20))
    CREATE TABLE CustOrder (CustID uniqueidentifier, OrderID int)
    
  3. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

F.Bir şema içinde bir updategram belirtme

Bu örnekte updategram aşağıdaki kayıt ekler tablo:

CustOrder(OrderID, BusinessEntityID, OrderType)

Bu updategram içinde belirtilen xsd şeması (yani yoktur ve öznitelikler updategram öğelerinin varsayılan eşleme yok).Öğeler ve öznitelikler veritabanı tabloları ve sütunları gerekli eşleme şeması sağlar.

Aşağıdaki şema (CustOrderSchema.xml) açıklayan bir <CustOrder> oluşan bir öğe SiparişNo ve BusinessEntityID öznitelikleri.Şema daha ilginç hale getirmek için bir varsayılan değer atanır BusinessEntityID öznitelik.Bir updategram ekleme işlemleri için yalnızca bir özniteliğin varsayılan değeri kullanır ve sonra da yalnızca updategram bu öznitelik belirtilmezse.

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

Bu updategram CustOrder bir kayıt ekler tablo.Updategram yalnızca SiparişNo ve BusinessEntityID öznitelik değerlerini belirtir.OrderType öznitelik değeri belirtin.Bu nedenle, varsayılan değer olan BusinessEntityID updategram kullanır öznitelik Önceki şemada belirtilen.

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

Bir eşleme şema belirtmek Updategram'lar daha fazla örnek için bkz: Açıklama eklenmiş bir eşleme şeması bir Updategram (SQLxml 4.0) belirtme.

Updategram sınamak için

  1. Bu tablo , tempdb veritabanı:

    USE tempdb
    CREATE TABLE CustOrder(
                     OrderID int, 
                     BusinessEntityID int, 
                     OrderType int)
    
  2. Yukarıdaki şema kopyalamak ve bir metin dosyasına yapıştırın.Dosyayı CustOrderSchema.xml kaydedin.

  3. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Dosyayı önceki adımda kullanılan aynı klasörde CustOrderUpdategram.xml olarak kaydedin.

  4. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) updategram yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

Eşdeğer xdr şeması budur:

<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.Null değerleri eklemek için xsi: nil öznitelik kullanılarak birsütun

Karşılık gelen sütun null değeri eklemek istediğiniz tablo, belirtebileceğiniz xsi:nil öznitelik öğesinde bir updategram.Karşılık gelen xsd şema xsd nillable öznitelik de belirtilmesi gerekir.

Örneğin, bu xsd şeması göz önünde bulundurun:

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

xsd şema belirtir nillable="true" için <fname> öğesi.Aşağıdaki updategram Bu şemayı kullanır:

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

Updategram belirtir xsi:nil için <fname> öğesinde <after> blok.Bu updategram çalıştırıldığında, bu nedenle, bir null değeri için ilk_ad sütununda eklenir tablo.

Updategram sınamak için

  1. Aşağıdaki oluşturmak tablo , tempdb veritabanı:

    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. Yukarıdaki şema kopyalamak ve bir metin dosyasına yapıştırın.Dosyayı StudentSchema.xml kaydedin.

  3. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Dosyayı StudentUpdategram.xml StudentSchema.xml kaydetmek için önceki adımda kullanılan aynı klasörde farklı kaydet.

  4. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) updategram yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

H.Ad alanları bir updategram belirtme

İçinde bir updategram updategram içinde aynı öğesinde bildirilen ad alanı ait öğeleri olabilir.Bu durum, karşılık gelen şema de aynı ad ve öğe o hedef ad alanına ait olmalıdır bildirmeniz gerekir.

Örneğin, aşağıdaki updategram (UpdateGram-ElementHavingNamespace.xml), <Sipariş> öğesi öğesi. bildirilen ad alanına ait olduğu

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

Bu durum, şema ayrıca ad alanı bu şemada gösterildiği gibi bildirmeniz gerekir:

Aşağıdaki şema (xsd ElementHavingNamespace.xml) karşılık gelen öğe ve özniteliklerin nasıl bildirilmelidir gösterir.

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

Updategram sınamak için

  1. Yukarıdaki şema kopyalamak ve bir metin dosyasına yapıştırın.xsd ElementHavingNamespace.xml dosyayı kaydedin.

  2. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Updategram ElementHavingNamespace.xml xsd ElementHavingnamespace.xml kaydetmek için kullanılan aynı klasörde dosya kaydetme.

  3. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) updategram yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

Ö.xml verilerini içine ekleme veri sütun türü

The xml data type was introduced in SQL Server 2005.Updategram'lar eklemek ve depolanan verileri güncelleştirmek için kullanabileceğiniz xml veri türü aşağıdaki hükümler içeren sütunlar:

  • The xml column cannot be used for identifying an existing row.Bu nedenle, onu eklenemez updg:before bölümünde bir updategram.

  • kapsam içine xml parçası olan ad alanları xml sütun korunur ve kendi ad alanı bildirimi eklenen üst öğesinin eklenmiş bir parçası.

Örneğin, aşağıdaki updategram (SampleUpdateGram.xml), <Desc> öğesi güncelleştirir ProductDescription sütununda üretim>productModel tablo , AdventureWorks2008R2 örnek veritabanı.Bu updategram ProductDescription sütun xml içeriğini xml içeriğiyle güncelleştirme olduğunu sonucudur <Desc> öğesi.

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

Updategram aşağıdaki açıklama eklenmiş xsd şeması için (SampleSchema.xml) ifade eder.

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

Updategram sınamak için

  1. Yukarıdaki şema kopyalamak ve bir metin dosyasına yapıştırın.xsd SampleSchema.xml dosyayı kaydedin.

    Not

    Updategram'lar varsayılan eşlemeyi desteklemediğinden, başı ve sonu tanımlamak için yolu yoktur xml veri türü.Bu etkili bir eşleme şeması ekleme ya da tablolar ile güncelleştirilirken gerektiği anlamına gelir xml veri türü sütun.Bir şema sağlandığında, sqlxml sütunlardan birinin eksik olduğunu belirten bir hata döndürür tablo.

  2. Yukarıdaki updategram kopyalayın ve bir metin dosyasına yapıştırın.Olarak SampleSchema.xml kaydetmek için kullanılan aynı klasörde SampleUpdategram.xml dosyasını Kaydet.

  3. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) updategram yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.