Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Updategram menunjukkan operasi sisipkan saat instans rekaman muncul di <blok setelah> tetapi tidak di blok sebelum> yang sesuai<. Dalam hal ini, updategram menyisipkan rekaman di <blok setelah> ke database.
Ini adalah format updategram untuk operasi penyisipan:
<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>
<sebelum> Blokir
Blok <sebelumnya> dapat dihilangkan untuk operasi penyisipan. Jika atribut opsional mapping-schema tidak ditentukan, <ElementName> yang ditentukan dalam peta updategram ke tabel database dan elemen turunan atau atribut memetakan ke kolom dalam tabel.
<setelah> Blokir
Anda dapat menentukan satu atau beberapa rekaman di <blok setelah> .
<Jika blok setelah> tidak menyediakan nilai untuk kolom tertentu, updategram menggunakan nilai default yang ditentukan dalam skema anotasi (jika skema telah ditentukan). Jika skema tidak menentukan nilai default untuk kolom, updategram tidak menentukan nilai eksplisit apa pun ke kolom ini dan, sebagai gantinya, menetapkan nilai default Microsoft SQL Server (jika ditentukan) ke kolom ini. Jika tidak ada nilai default SQL Server dan kolom menerima nilai NULL, updategram mengatur nilai kolom ke NULL. Jika kolom tidak memiliki nilai default atau menerima nilai NULL, perintah gagal dan updategram mengembalikan kesalahan. Atribut opsional updg:returnid digunakan untuk mengembalikan nilai identitas yang dihasilkan oleh sistem saat rekaman ditambahkan dalam tabel dengan kolom jenis IDENTITAS.
atribut updg:id
Jika updategram hanya menyisipkan rekaman, updategram tidak memerlukan updg:id atribut . Untuk informasi selengkapnya tentang updg:id, lihat Memperbarui Data Menggunakan Pembaruan XML (SQLXML 4.0).
updg:at-identity Attribute
Saat updategram menyisipkan rekaman dalam tabel yang memiliki kolom jenis IDENTITAS, updategram dapat mengambil nilai yang ditetapkan sistem dengan menggunakan atribut opsional updg:at-identity . Updategram kemudian dapat menggunakan nilai ini dalam operasi berikutnya. Setelah eksekusi updategram, Anda dapat mengembalikan nilai identitas yang dihasilkan dengan menentukan updg:returnid atribut .
updg:guid Attribute
Atribut updg:guid adalah atribut opsional yang menghasilkan pengidentifikasi unik global. Nilai ini tetap berada dalam cakupan untuk seluruh <blok sinkronisasi> tempat nilai ditentukan. Anda dapat menggunakan nilai ini di mana saja di <blok sinkronisasi> . Atribut memanggil NEWGUID()fungsi SQL Server untuk menghasilkan pengidentifikasi unik.
Contoh
Untuk membuat sampel kerja menggunakan contoh berikut, Anda harus memenuhi persyaratan yang ditentukan dalam Persyaratan untuk Menjalankan Contoh SQLXML.
Sebelum menggunakan contoh updategram, perhatikan hal berikut:
Sebagian besar contoh menggunakan pemetaan default (yaitu, tidak ada skema pemetaan yang ditentukan dalam updategram). Untuk contoh pembaruan lainnya yang menggunakan skema pemetaan, lihat Menentukan Skema Pemetaan Anotasi dalam Updategram (SQLXML 4.0).
Sebagian besar contoh menggunakan database sampel AdventureWorks2012 . Semua pembaruan diterapkan ke tabel dalam database ini.
Sebuah. Menyisipkan rekaman dengan menggunakan updategram
Updategram yang berpusat pada atribut ini menyisipkan rekaman dalam tabel HumanResources.Employee dalam database AdventureWorks2012 .
Dalam contoh ini, updategram tidak menentukan skema pemetaan. Oleh karena itu, updategram menggunakan pemetaan default, di mana nama elemen dipetakan ke nama tabel dan atribut atau elemen turunan memetakan ke kolom dalam tabel tersebut.
Skema AdventureWorks2012 untuk tabel HumanResources.Department memberlakukan pembatasan 'tidak null' pada semua kolom. Oleh karena itu, updategram harus menyertakan nilai yang ditentukan untuk semua kolom. DepartmentID adalah kolom jenis IDENTITAS. Oleh karena itu, tidak ada nilai yang ditentukan untuk itu.
<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>
Untuk menguji sampel kueri XPath terhadap skema
Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai MyUpdategram.xml.
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
Dalam pemetaan yang ber sentris elemen, updategram terlihat seperti ini:
<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>
Dalam updategram mode campuran (elemen-sentris dan atribut-sentris), elemen dapat memiliki atribut dan subelemen, seperti yang ditunjukkan dalam updategram ini:
<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. Menyisipkan beberapa rekaman dengan menggunakan updategram
Updategram ini menambahkan dua rekaman shift baru ke tabel HumanResources.Shift. Updategram tidak menentukan opsional <sebelum> 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>
Untuk menguji sampel kueri XPath terhadap skema
Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai Updategram-AddShifts.xml.
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
Versi lain dari contoh ini adalah updategram yang menggunakan dua blok terpisah< setelah> blok alih-alih satu blok untuk menyisipkan dua karyawan. Ini valid dan dapat dikodekan sebagai berikut:
<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. Bekerja dengan karakter SQL Server yang valid yang tidak valid di XML
Di SQL Server, nama tabel dapat menyertakan spasi, seperti tabel Detail Pesanan di database Northwind. Namun, ini tidak valid dalam karakter XML yang merupakan pengidentifikasi SQL Server yang valid tetapi pengidentifikasi XML yang valid dapat dikodekan menggunakan '__xHHHH__' sebagai nilai pengodean, di mana HHHH adalah singkatan dari kode UCS-2 heksadesimal empat digit untuk karakter dalam urutan bit-first yang paling signifikan.
Nota
Contoh ini menggunakan database Northwind. Anda dapat menginstal database Northwind dengan menggunakan skrip SQL yang tersedia untuk diunduh dari situs Web Microsoft ini.
Selain itu, nama elemen harus diapit dalam tanda kurung siku ([ ]). Karena karakter [dan] tidak valid di XML, Anda harus mengodekannya sebagai _x005B_ dan _x005D_. (Jika Anda menggunakan skema pemetaan, Anda dapat memberikan nama elemen yang tidak berisi karakter yang tidak valid, seperti spasi kosong. Skema pemetaan melakukan pemetaan yang diperlukan; oleh karena itu, Anda tidak perlu mengodekan untuk karakter ini).
Updategram ini menambahkan rekaman ke tabel Detail Pesanan di database 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>
Kolom UnitPrice dalam tabel Detail Pesanan adalah jenisnya money . Untuk menerapkan konversi jenis yang string sesuai (dari jenis ke money jenis), karakter tanda dolar ($) harus ditambahkan sebagai bagian dari nilai. Jika updategram tidak menentukan skema pemetaan, karakter pertama dari string nilai dievaluasi. Jika karakter pertama adalah tanda dolar ($), konversi yang sesuai diterapkan.
Jika updategram ditentukan terhadap skema pemetaan di mana kolom ditandai dengan tepat sebagai dt:type="fixed.14.4" atau sql:datatype="money", tanda dolar ($) tidak diperlukan dan konversi ditangani oleh pemetaan. Ini adalah cara yang disarankan untuk memastikan bahwa konversi jenis yang sesuai terjadi.
Untuk menguji sampel kueri XPath terhadap skema
Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai UpdategramSpacesInTableName.xml.
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
D. Menggunakan atribut at-identity untuk mengambil nilai yang telah disisipkan di kolom jenis IDENTITAS
Updategram berikut menyisipkan dua rekaman: satu di tabel Sales.SalesOrderHeader dan satu lagi dalam tabel Sales.SalesOrderDetail.
Pertama, updategram menambahkan rekaman ke tabel Sales.SalesOrderHeader. Dalam tabel ini, kolom SalesOrderID adalah kolom jenis IDENTITAS. Oleh karena itu, saat Anda menambahkan rekaman ini ke tabel, updategram menggunakan at-identity atribut untuk mengambil nilai SalesOrderID yang ditetapkan sebagai "x" (nilai tempat penampung). Updategam kemudian menentukan variabel ini at-identity sebagai nilai atribut SalesOrderID dalam <elemen Sales.SalesOrderDetail> .
<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>
Jika Anda ingin mengembalikan nilai identitas yang dihasilkan oleh updg:at-identity atribut , Anda dapat menggunakan updg:returnid atribut . Berikut ini adalah updategram yang direvisi yang mengembalikan nilai identitas ini. (Updategram ini menambahkan dua rekaman pesanan dan dua catatan detail pesanan, hanya untuk membuat contoh sedikit lebih kompleks.)
<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>
Saat updategram dijalankan, ia mengembalikan hasil yang mirip dengan yang berikut ini, yang mencakup nilai identitas (nilai yang dihasilkan dari kolom ShiftID yang digunakan untuk identitas tabel) yang dihasilkan:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<returnid>
<x>4</x>
<y>5</y>
</returnid>
</ROOT>
Untuk menguji sampel kueri XPath terhadap skema
Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai Updategram-returnId.xml.
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
E. Menggunakan atribut updg:guid untuk menghasilkan nilai unik
Dalam contoh ini, updategram menyisipkan rekaman dalam tabel Cust dan CustOrder. Selain itu, updategram menghasilkan nilai unik untuk atribut CustomerID dengan menggunakan updg:guid atribut .
<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 menentukan returnid atribut . Akibatnya, GUID yang dihasilkan dikembalikan:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<returnid>
<x>7111BD1A-7F0B-4CEE-B411-260DADFEFA2A</x>
</returnid>
</ROOT>
Untuk menguji updategram
Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai Updategram-GenerateGuid.xml.
Buat tabel ini:
USE tempdb CREATE TABLE Cust (CustID uniqueidentifier, LastName varchar(20)) CREATE TABLE CustOrder (CustID uniqueidentifier, OrderID int)Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
F. Menentukan skema dalam updategram
Updategram dalam contoh ini menyisipkan rekaman ke dalam tabel berikut:
CustOrder(OrderID, EmployeeID, OrderType)
Skema XSD ditentukan dalam updategram ini (yaitu, tidak ada pemetaan default elemen dan atribut updategram). Skema ini menyediakan pemetaan elemen dan atribut yang diperlukan ke tabel dan kolom database.
Skema berikut (CustOrderSchema.xml) menjelaskan <elemen CustOrder> yang terdiri dari atribut OrderID dan EmployeeID . Untuk membuat skema lebih menarik, nilai default ditetapkan ke atribut EmployeeID . Updategram menggunakan nilai default atribut hanya untuk operasi penyisipan, lalu hanya jika updategram tidak menentukan atribut tersebut.
<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>
Updategram ini menyisipkan rekaman ke dalam tabel CustOrder. Updategram hanya menentukan nilai atribut OrderID dan EmployeeID. Ini tidak menentukan nilai atribut OrderType. Oleh karena itu, updategram menggunakan nilai default atribut EmployeeID yang ditentukan dalam skema sebelumnya.
<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>
Untuk contoh updategram lainnya yang menentukan skema pemetaan, lihat Menentukan Skema Pemetaan Anotasi dalam Updategram (SQLXML 4.0).
Untuk menguji updategram
Buat tabel ini di database tempdb :
USE tempdb CREATE TABLE CustOrder( OrderID int, EmployeeID int, OrderType int)Salin skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai CustOrderSchema.xml.
Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai CustOrderUpdategram.xml di folder yang sama yang digunakan di langkah sebelumnya.
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
Ini adalah skema XDR yang setara:
<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. Menggunakan atribut xsi:nil untuk menyisipkan nilai null dalam kolom
Jika Anda ingin menyisipkan nilai null di kolom terkait dalam tabel, Anda dapat menentukan xsi:nil atribut pada elemen dalam updategram. Dalam skema XSD yang sesuai, atribut XSD nillable juga harus ditentukan.
Misalnya, pertimbangkan skema XSD ini:
<?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>
Skema XSD menentukan nillable="true" untuk <elemen fname> . Updategram berikut menggunakan skema ini:
<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 menentukan xsi:nil untuk <elemen fname> di <blok setelah> . Oleh karena itu, ketika updategram ini dijalankan, nilai NULL disisipkan untuk kolom first_name dalam tabel.
Untuk menguji updategram
Buat tabel berikut di database 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) GOSalin skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai StudentSchema.xml.
Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai StudentUpdategram.xml di folder yang sama yang digunakan pada langkah sebelumnya untuk menyimpan StudentSchema.xml.
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
H. Menentukan namespace dalam updategram
Dalam updategram Anda dapat memiliki elemen milik namespace yang dideklarasikan dalam elemen yang sama dalam updategram. Dalam hal ini, skema yang sesuai juga harus mendeklarasikan namespace yang sama dan elemen harus termasuk dalam namespace layanan target tersebut.
Misalnya, dalam updategram berikut (UpdateGram-ElementHavingNamespace.xml), <elemen Order> milik namespace yang dideklarasikan dalam elemen .
<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>
Dalam hal ini, skema juga harus mendeklarasikan namespace seperti yang ditunjukkan dalam skema ini:
Skema berikut (XSD-ElementHavingNamespace.xml) menunjukkan bagaimana elemen dan atribut yang sesuai harus dideklarasikan.
<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>
Untuk menguji updategram
Salin skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai XSD-ElementHavingNamespace.xml.
Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai Updategram-ElementHavingNamespace.xml di folder yang sama yang digunakan untuk menyimpan XSD-ElementHavingnamespace.xml.
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
Saya. Menyisipkan data ke dalam kolom tipe data XML
xml Jenis data diperkenalkan di SQL Server 2005. Anda bisa menggunakan updategram untuk menyisipkan dan memperbarui data yang disimpan dalam xml kolom tipe data dengan ketentuan berikut:
Kolom
xmltidak dapat digunakan untuk mengidentifikasi baris yang sudah ada. Oleh karena itu, tidak dapat disertakan di bagianupdg:beforeupdategram.Namespace yang berada dalam cakupan fragmen XML yang disisipkan ke dalam
xmlkolom akan dipertahankan dan deklarasi namespace layanannya ditambahkan ke elemen atas fragmen yang disisipkan.
Misalnya, dalam updategram berikut (SampleUpdateGram.xml), <elemen Desc> memperbarui kolom ProductDescription dalam tabel ProductModel Produksi>dalam database sampel AdventureWorks2012 . Hasil dari updategram ini adalah bahwa konten XML dari kolom ProductDescription diperbarui dengan konten XML elemen <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-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"
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; 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 mengacu pada skema XSD yang dianotasi berikut (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>
Untuk menguji updategram
Salin skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai XSD-SampleSchema.xml.
Nota
Karena updategram mendukung pemetaan default, tidak ada cara untuk mengidentifikasi awal dan akhir jenis
xmldata. Ini secara efektif berarti bahwa skema pemetaan diperlukan saat menyisipkan atau memperbarui tabel denganxmlkolom tipe data. Ketika skema tidak disediakan, SQLXML mengembalikan kesalahan yang menunjukkan bahwa salah satu kolom hilang dari tabel.Salin updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai SampleUpdategram.xml di folder yang sama yang digunakan untuk menyimpan SampleSchema.xml.
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.