Bagikan melalui


Menggunakan Beban Massal SQLXML di Lingkungan .NET

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:

  1. 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))  
    GO  
    
  2. Simpan 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>  
    
  3. 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>  
    
  4. Mulai Visual Studio.

  5. Buat aplikasi konsol C#.

  6. Dari menu Proyek , pilih Tambahkan Referensi.

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

  8. 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());  
             }  
       }  
    
  9. 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.dll  
    

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

Lihat Juga

Melakukan Pemuatan Massal Data XML (SQLXML 4.0)