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.
Topik ini menjelaskan bagaimana fungsionalitas Beban Massal XML dapat digunakan di lingkungan .NET. Untuk informasi mendetail tentang Pemuatan Massal XML, lihat Melakukan Pemuatan Massal Data XML (SQLXML 4.0).
Untuk menggunakan objek SQLXML Bulk Load COM dari lingkungan terkelola, Anda perlu menambahkan referensi proyek ke objek ini. Ini menghasilkan antarmuka pembungkus terkelola di sekitar objek Bulk Load COM.
Nota
Beban massal XML terkelola tidak berfungsi dengan aliran terkelola dan memerlukan pembungkus di sekitar aliran asli. Komponen Beban Massal SQLXML tidak akan berjalan di lingkungan multi-utas (atribut'[MTAThread]'). Jika Anda mencoba menjalankan komponen Beban Massal di lingkungan multi-utas, Anda mendapatkan pengecualian InvalidCastException dengan informasi tambahan berikut: "QueryInterface untuk antarmuka SQLXMLBULKLOADLib.ISQLXMLBulkLoad gagal." Solusinya adalah membuat objek yang berisi objek Muat Massal single-thread dapat diakses (misalnya, dengan menggunakan atribut [STAThread] seperti yang ditunjukkan dalam sampel).
Topik ini menyediakan aplikasi sampel C# yang berfungsi untuk memuat data XML secara massal dalam database. Untuk membuat sampel kerja, ikuti langkah-langkah berikut:
Buat tabel berikut:
CREATE TABLE Ord ( OrderID int identity(1,1) PRIMARY KEY, CustomerID varchar(5)) GO CREATE TABLE Product ( ProductID int identity(1,1) PRIMARY KEY, ProductName varchar(20)) GO CREATE TABLE OrderDetail ( OrderID int FOREIGN KEY REFERENCES Ord(OrderID), ProductID int FOREIGN KEY REFERENCES Product(ProductID), CONSTRAINT OD_key PRIMARY KEY (OrderID, ProductID)) GOSimpan skema berikut dalam file (schema.xml):
<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="OrderOD" parent="Ord" parent-key="OrderID" child="OrderDetail" child-key="OrderID" /> <sql:relationship name="ODProduct" parent="OrderDetail" parent-key="ProductID" child="Product" child-key="ProductID" inverse="true"/> </xsd:appinfo> </xsd:annotation> <xsd:element name="Order" sql:relation="Ord" sql:key-fields="OrderID" > <xsd:complexType> <xsd:sequence> <xsd:element name="Product" sql:relation="Product" sql:key-fields="ProductID" sql:relationship="OrderOD ODProduct"> <xsd:complexType> <xsd:attribute name="ProductID" type="xsd:int" /> <xsd:attribute name="ProductName" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="OrderID" type="xsd:integer" /> <xsd:attribute name="CustomerID" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:schema>Simpan contoh dokumen XML berikut dalam file (data.xml):
<ROOT> <Order OrderID="11" CustomerID="ALFKI"> <Product ProductID="11" ProductName="Chai" /> <Product ProductID="22" ProductName="Chang" /> </Order> <Order OrderID="22" CustomerID="ANATR"> <Product ProductID="33" ProductName="Aniseed Syrup" /> <Product ProductID="44" ProductName="Gumbo Mix" /> </Order> </ROOT>Mulai Visual Studio.
Buat aplikasi konsol C#.
Dari menu Proyek , pilih Tambahkan Referensi.
Di tab COM , pilih Microsoft SQLXML Bulkload 4.0 Type Library (xblkld4.dll) dan klik OK. Anda akan melihat rakitan Interop.SQLXMLBULKLOADLib yang dibuat dalam proyek.
Ganti metode Main() dengan kode berikut. Perbarui properti ConnectionString dan jalur file ke skema dan file data.
[STAThread] static void Main(string[] args) { try { SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class objBL = new SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class(); objBL.ConnectionString = "Provider=sqloledb;server=server;database=databaseName;integrated security=SSPI"; objBL.ErrorLogFile = "error.xml"; objBL.KeepIdentity = false; objBL.Execute ("schema.xml","data.xml"); } catch(Exception e) { Console.WriteLine(e.ToString()); } }Untuk memuat XML dalam tabel yang Anda buat, buat dan jalankan proyek.
Nota
Referensi ke komponen Beban Massal (xblkld4.dll) juga dapat ditambahkan menggunakan alat tlbimp.exe, yang tersedia sebagai bagian dari .NET framework. Alat ini membuat pembungkus terkelola untuk DLL asli (xblkld4.dll), yang kemudian dapat digunakan dalam proyek .NET apa pun. Contohnya:
c:\>tlbimp xblkld4.dllIni membuat DLL pembungkus terkelola (SQLXMLBULKLOADLib.dll) yang dapat Anda gunakan dalam proyek .NET Framework. Di .NET Framework, Anda menambahkan referensi proyek ke DLL yang baru dibuat.