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.
Berlaku untuk: SQL Server
Azure SQL Database
Updategram menunjukkan operasi sisipkan saat instans rekaman muncul di <after> blok tetapi tidak di blok yang <before> sesuai. Dalam hal ini, updategram menyisipkan rekaman di <after> blok ke dalam 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>
blok <before>
<before> Blok dapat dihilangkan untuk operasi penyisipan. Jika atribut opsional mapping-schema tidak ditentukan, <ElementName> atribut yang ditentukan dalam peta updategram ke tabel database dan elemen turunan atau atribut memetakan ke kolom dalam tabel.
blok <after>
Anda dapat menentukan satu atau beberapa rekaman di blok.<after>
<after> Jika blok 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 SQL Server (jika ditentukan) ke kolom ini. Jika tidak ada nilai default SQL Server dan kolom menerima NULL nilai, updategram mengatur nilai kolom ke NULL. Jika kolom tidak memiliki nilai default, atau menerima NULL nilai, 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 IDENTITYkolom -type.
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).
atribut updg:at-identity
Saat updategram menyisipkan rekaman dalam tabel yang memiliki IDENTITYkolom -type, 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 .
atribut updg:guid
Atribut updg:guid adalah atribut opsional yang menghasilkan pengidentifikasi unik global. Nilai ini tetap berada dalam cakupan untuk seluruh <sync> blok tempat nilai ditentukan. Anda dapat menggunakan nilai ini di mana saja di <sync> blok. 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, pertimbangkan:
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
AdventureWorks2025database sampel. Semua pembaruan diterapkan ke tabel dalam database ini.
J. Menyisipkan rekaman dengan menggunakan updategram
Updategram yang bersentrik atribut ini menyisipkan rekaman dalam HumanResources.Employee tabel dalam AdventureWorks2025 database.
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.
AdventureWorks2025 Skema 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 IDENTITYkolom -type. 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>
Menguji sampel kueri XPath terhadap skema
Salin updategram sebelumnya 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 HumanResources.Shift tabel. Updategram tidak menentukan blok opsional <before> .
<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>
Menguji sampel kueri XPath terhadap skema
Salin updategram sebelumnya 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 <after> 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 tidak valid dapat dikodekan menggunakan _xHHHH_ sebagai nilai pengodean, di mana HHHH merupakan singkatan dari kode UCS-2 heksadesimal empat digit untuk karakter dalam urutan bit-first yang paling signifikan.
Catatan
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_, masing-masing. (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 jenis uang . Untuk menerapkan konversi jenis yang sesuai (dari jenis string ke jenis uang ), karakter tanda dolar ($) harus ditambahkan sebagai bagian dari nilai. Jika updategram tidak menentukan skema pemetaan, karakter pertama dari nilai string 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.
Menguji sampel kueri XPath terhadap skema
Salin updategram sebelumnya 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. Gunakan atribut at-identity untuk mengambil nilai yang telah disisipkan di kolom jenis IDENTITAS
Updategram berikut menyisipkan dua rekaman: satu di Sales.SalesOrderHeader tabel dan satu lagi dalam Sales.SalesOrderDetail tabel.
Pertama, updategram menambahkan rekaman ke Sales.SalesOrderHeader tabel. Dalam tabel ini, kolom SalesOrderID adalah IDENTITYkolom -type. 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). Updategram 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 . Contoh berikut 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 contoh berikut, 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>
Menguji sampel kueri XPath terhadap skema
Salin updategram sebelumnya 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.
updg:guid Gunakan atribut 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>
Menguji updategram
Salin updategram sebelumnya 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 (artinya, 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 <CustOrder> elemen yang terdiri dari OrderID atribut dan EmployeeID . Untuk membuat skema lebih menarik, nilai default ditetapkan ke EmployeeID atribut . 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).
Menguji updategram
Buat tabel ini di
tempdbdatabase:USE tempdb; CREATE TABLE CustOrder ( OrderID INT, EmployeeID INT, OrderType INT );Salin skema sebelumnya dan tempelkan ke dalam file teks. Simpan file sebagai
CustOrderSchema.xml.Salin updategram sebelumnya dan tempelkan ke dalam file teks. Simpan file seperti
CustOrderUpdategram.xmldi 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. Gunakan 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" 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 elemen <fname> di <after> blok. Oleh karena itu, ketika updategram ini dijalankan, nilai NULL dimasukkan untuk kolom first_name dalam tabel.
Menguji updategram
Buat tabel berikut ini di
tempdbdatabase: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 sebelumnya dan tempelkan ke dalam file teks. Simpan file sebagai
StudentSchema.xml.Salin updategram sebelumnya dan tempelkan ke dalam file teks. Simpan file seperti
StudentUpdategram.xmldi folder yang sama yang digunakan pada langkah sebelumnya untuk menyimpanStudentSchema.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. Tentukan 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), <Order> elemen 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>
Menguji updategram
Salin skema sebelumnya dan tempelkan ke dalam file teks. Simpan file sebagai
XSD-ElementHavingNamespace.xml.Salin updategram sebelumnya dan tempelkan ke dalam file teks. Simpan file seperti
Updategram-ElementHavingNamespace.xmldi folder yang sama yang digunakan untuk menyimpanXSD-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.
I. Menyisipkan data ke dalam kolom tipe data XML
Anda bisa menggunakan updategram untuk menyisipkan dan memperbarui data yang disimpan di kolom tipe data xml dengan pertimbangan berikut:
Kolom xml tidak dapat digunakan untuk mengidentifikasi baris yang sudah ada. Oleh karena itu, ini tidak dapat disertakan di bagian
updg:beforeupdategram.Namespace yang berada dalam cakupan fragmen XML yang disisipkan ke dalam kolom xml dipertahankan dan deklarasi namespace layanannya ditambahkan ke elemen atas fragmen yang disisipkan.
Misalnya, dalam updategram berikut (SampleUpdateGram.xml), <Desc> elemen memperbarui kolom ProductDescription dalam tabel ProductModel Produksi>dalam AdventureWorks2025 database sampel. Hasil dari updategram ini adalah bahwa konten XML dari kolom ProductDescription diperbarui dengan konten <Desc> XML elemen.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema="SampleSchema.xml">
<updg:before>
<ProductModel ProductModelID="19">
<Name>Mountain-100</Name>
</ProductModel>
</updg:before>
<updg:after>
<ProductModel>
<Name>Mountain-100</Name>
<Desc>
<?xml href="ProductDescription.xsl" type="text/xsl" e="text/xsl"?>
<p1:ProductDescription xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" xmlns:wm="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" xmlns:wf="https://www.adventure-works.com/schemas/OtherFeatures" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="">
<p1:Summary>
<html:p>Insert Example</html:p>
</p1:Summary>
<p1:Manufacturer>
<p1:Name>AdventureWorks</p1:Name>
<p1:Copyright>2002</p1:Copyright>
<p1:ProductURL>HTTP://www.Adventure-works.com</p1:ProductURL>
</p1:Manufacturer>
<p1:Features>
These are the product highlights.
<wm:Warranty>
<wm:WarrantyPeriod>3 years</wm:WarrantyPeriod>
<wm:Description>parts and labor</wm:Description>
</wm:Warranty>
<wm:Maintenance>
<wm:NoOfYears>10 years</wm:NoOfYears>
<wm:Description>maintenance contract available through your dealer or any AdventureWorks retail store.</wm:Description>
</wm:Maintenance>
<wf:wheel>High performance wheels.</wf:wheel>
<wf:saddle>
<html:i>Anatomic design</html:i>
and made from durable leather for a full-day of riding in comfort.
</wf:saddle>
<wf:pedal>
<html:b>Top-of-the-line</html:b>
clipless pedals with adjustable tension.
</wf:pedal>
<wf:BikeFrame>Each frame is hand-crafted in our Bothell facility to the optimum diameter and wall-thickness required of a premium mountain frame. The heat-treated welded aluminum frame has a larger diameter tube that absorbs the bumps.</wf:BikeFrame>
<wf:crankset> Triple crankset; aluminum crank arm; flawless shifting. </wf:crankset>
</p1:Features>
<p1:Picture>
<p1:Angle>front</p1:Angle>
<p1:Size>small</p1:Size>
<p1:ProductPhotoID>118</p1:ProductPhotoID>
</p1:Picture>
<p1:Specifications>
These are the product specifications.
<Material>Aluminum Alloy</Material>
<Color>Available in most colors</Color>
<ProductLine>Mountain bike</ProductLine>
<Style>Unisex</Style>
<RiderExperience>Advanced to Professional riders</RiderExperience>
</p1:Specifications>
</p1:ProductDescription>
</Desc>
</ProductModel>
</updg:after>
</updg:sync>
</ROOT>
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="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
<xsd:element name="ProductModel" sql:relation="Production.ProductModel">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"></xsd:element>
<xsd:element name="Desc" sql:field="CatalogDescription" sql:datatype="xml">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ProductDescription">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Summary" type="xsd:anyType">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="ProductModelID" sql:field="ProductModelID" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Menguji updategram
Salin skema sebelumnya dan tempelkan ke dalam file teks. Simpan file sebagai
XSD-SampleSchema.xml.Catatan
Karena updategram mendukung pemetaan default, tidak ada cara untuk mengidentifikasi awal dan akhir jenis data xml . Ini secara efektif berarti bahwa skema pemetaan diperlukan saat menyisipkan atau memperbarui tabel dengan kolom tipe data xml . Saat skema tidak disediakan, SQLXML mengembalikan kesalahan yang menunjukkan bahwa salah satu kolom hilang dari tabel.
Salin updategram sebelumnya dan tempelkan ke dalam file teks. Simpan file seperti
SampleUpdategram.xmldi folder yang sama yang digunakan untuk menyimpanSampleSchema.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.