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
Karena BEBAN Massal XML menghasilkan rekaman saat simpul mereka masuk ke dalam cakupan dan mengirim rekaman tersebut ke Microsoft SQL Server sebagai simpul mereka keluar cakupan, data untuk rekaman harus ada dalam cakupan simpul.
Pertimbangkan skema XSD berikut, di mana hubungan satu-ke-banyak antara > dan> (satu pelanggan dapat melakukan banyak pesanan) ditentukan dengan menggunakan<>:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"<>
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustCustOrder"
parent="Cust"
parent-key="CustomerID"
child="CustOrder"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Customers" sql:relation="Cust" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerID" type="xsd:integer" />
<xsd:element name="CompanyName" type="xsd:string" />
<xsd:element name="City" type="xsd:string" />
<xsd:element name="Order"
sql:relation="CustOrder"
sql:relationship="CustCustOrder" >
<xsd:complexType>
<xsd:attribute name="OrderID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<Saat node elemen Pelanggan> masuk ke dalam cakupan, Beban Massal XML menghasilkan catatan pelanggan. Catatan ini tetap ada hingga Pemuatan Massal XML membaca >. Dalam memproses node elemen Order<, XML Bulk Load menggunakan> sql:relationship< untuk mendapatkan nilai kolom kunci asing >CustomerID dari tabel CustOrder dari >, karena> tidak menentukan atribut CustomerID. Ini berarti bahwa dalam menentukan <>, Anda harus menentukan atribut CustomerID dalam skema sebelum Anda menentukan<>. Jika tidak, ketika > masuk ke dalam cakupan, Beban Massal XML menghasilkan rekaman untuk tabel CustOrder, dan ketika Beban Massal XML mencapai <tag akhir /Order>, ia mengirim catatan ke SQL Server tanpa nilai kolom kunci asing CustomerID.
Simpan skema yang disediakan dalam contoh ini sebagai SampleSchema.xml.
Untuk menguji sampel yang berfungsi
Buat tabel ini:
CREATE TABLE Cust ( CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle') GO CREATE TABLE CustOrder ( OrderID varchar(10) PRIMARY KEY, CustomerID int FOREIGN KEY REFERENCES Cust(CustomerID)) GOSimpan data sampel berikut sebagai SampleXMLData.xml:
<ROOT> <Customers> <CompanyName>Hanari Carnes</CompanyName> <City>NY</City> <Order OrderID="1" /> <Order OrderID="2" /> <CustomerID>1111</CustomerID> </Customers> <Customers> <CompanyName>Toms Spezialitten</CompanyName> <City>LA</City> <Order OrderID="3" /> <CustomerID>1112</CustomerID> </Customers> <Customers> <CompanyName>Victuailles en stock</CompanyName> <Order OrderID="4" /> <CustomerID>1113</CustomerID> </Customers> </ROOT>Untuk menjalankan Pemuatan Massal XML, simpan dan jalankan contoh Microsoft Visual Basic Scripting Edition (VBScript) berikut sebagai MySample.vbs:
set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0") objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI" objBL.ErrorLogFile = "c:\error.log" objBL.CheckConstraints = True objBL.Transaction=True objBL.Execute "c:\SampleSchema.xml", "c:\SampleXMLData.xml" set objBL=NothingHasilnya adalah XML Bulk Load menyisipkan nilai NULL di kolom kunci asing CustomerID dari tabel CustOrder. Jika Anda merevisi data sampel XML sehingga > muncul sebelum< elemen Pesan> anak, Anda mendapatkan hasil yang diharapkan: Beban Massal XML menyisipkan nilai kunci asing yang ditentukan ke dalam kolom.
Ini adalah skema XDR yang setara:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="CustomerID" />
<ElementType name="CompanyName" />
<ElementType name="City" />
<ElementType name="root" sql:is-constant="1">
<element type="Customers" />
</ElementType>
<ElementType name="Customers" sql:relation="Cust" >
<element type="CustomerID" sql:field="CustomerID" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
<element type="Order" >
<sql:relationship
key-relation ="Cust"
key ="CustomerID"
foreign-key ="CustomerID"
foreign-relation="CustOrder" />
</element>
</ElementType>
<ElementType name="Order" sql:relation="CustOrder" >
<AttributeType name="OrderID" />
<AttributeType name="CustomerID" />
<attribute type="OrderID" />
<attribute type="CustomerID" />
</ElementType>
</Schema>