Bagikan melalui


Pengantar Beban Massal XML (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure SQL Database

Beban Massal XML adalah objek COM mandiri yang memungkinkan Anda memuat data XML semistruktur ke dalam tabel Microsoft SQL Server.

Anda dapat menyisipkan data XML ke dalam database SQL Server dengan menggunakan pernyataan INSERT dan fungsi OPENXML; namun, utilitas Beban Massal memberikan performa yang lebih baik ketika Anda perlu menyisipkan data XML dalam jumlah besar.

Metode Jalankan model objek Muat Massal XML mengambil dua parameter:

  • Skema Definisi Skema XML (XSD) atau XML-Data Reduced (XDR) yang dianotasi. Utilitas Beban Massal XML menginterpretasikan skema pemetaan ini dan anotasi yang ditentukan dalam skema dalam mengidentifikasi tabel SQL Server tempat data XML akan disisipkan.

  • Dokumen XML atau fragmen dokumen (fragmen dokumen adalah dokumen tanpa satu elemen tingkat atas). Nama file atau aliran tempat Pemuatan Massal XML dapat dibaca dapat ditentukan.

Beban Massal XML menginterpretasikan skema pemetaan dan mengidentifikasi tabel tempat data XML akan disisipkan.

Diasumsikan bahwa Anda terbiasa dengan fitur SQL Server berikut:

Streaming of XML Data

Karena dokumen XML sumber bisa besar, seluruh dokumen tidak dibaca ke dalam memori untuk pemrosesan beban massal. Sebagai gantinya, Beban Massal XML menginterpretasikan data XML sebagai aliran dan membacanya. Saat utilitas membaca data, utilitas mengidentifikasi tabel database, menghasilkan rekaman yang sesuai dari sumber data XML, lalu mengirim rekaman ke SQL Server untuk penyisipan.

Misalnya, dokumen XML sumber berikut terdiri dari elemen Pelanggan> dan <elemen anak Pesan>:<

<Customer ...>  
    <Order.../>  
    <Order .../>  
     ...  
</Customer>  
...  

Saat Beban Massal XML membaca <elemen Pelanggan> , xml menghasilkan catatan untuk Customertable. Saat membaca <tag akhir /Pelanggan> , Beban Massal XML menyisipkan rekaman tersebut ke dalam tabel di SQL Server. Dengan cara yang sama, ketika membaca elemen Pesanan>, Beban Massal XML menghasilkan rekaman untuk Ordertable, lalu menyisipkan rekaman tersebut ke dalam tabel SQL Server saat membaca< tag akhir /Order>.<

Operasi Pemuatan Massal XML yang Ditransaksikan dan Tidak Ditransaksikan

Beban Massal XML dapat beroperasi dalam mode yang ditransaksikan atau tidak ditransaksikan. Performa biasanya optimal jika Anda memuat secara massal dalam mode nontransaksi: yaitu, properti Transaksi diatur ke FALSE) dan salah satu kondisi berikut ini benar:

  • Tabel tempat data dimuat secara massal kosong tanpa indeks.

  • Tabel memiliki data dan indeks unik.

Pendekatan yang tidak ditransaksikan tidak menjamin pembatalan jika terjadi kesalahan dalam proses beban massal (meskipun pemutaran kembali parsial dapat terjadi). Beban massal yang tidak ditransaksikan sesuai ketika database kosong. Oleh karena itu, jika ada yang salah, Anda dapat membersihkan database dan memulai Pemuatan Massal XML lagi.

Catatan

Dalam mode tidak ditransaksikan, Beban Massal XML menggunakan transaksi internal default dan menerapkannya. Ketika properti Transaksi diatur ke TRUE, Beban Massal XML tidak memanggil penerapan pada transaksi ini.

Jika properti Transaksi diatur ke TRUE, Beban Massal XML membuat file sementara, satu untuk setiap tabel yang diidentifikasi dalam skema pemetaan. Muat Massal XML terlebih dahulu menyimpan rekaman dari dokumen XML sumber dalam file sementara ini. Kemudian, pernyataan TRANSACT-SQL BULK INSERT mengambil rekaman ini dari file dan menyimpannya dalam tabel yang sesuai. Anda dapat menentukan lokasi untuk file sementara ini dengan menggunakan properti TempFilePath. Anda harus memastikan bahwa akun SQL Server yang digunakan dengan Beban Massal XML memiliki akses ke jalur ini. Jika properti TempFilePath tidak ditentukan, jalur file default yang ditentukan dalam variabel lingkungan TEMP digunakan untuk membuat file sementara.

Jika properti Transaksi diatur ke FALSE (pengaturan default), Beban Massal XML menggunakan antarmuka OLE DB IRowsetFastLoad untuk memuat data secara massal.

Jika properti ConnectionString mengatur string koneksi, dan properti Transaksi diatur ke TRUE, Beban Massal XML beroperasi dalam konteks transaksinya sendiri. (Misalnya, Beban Massal XML memulai transaksinya sendiri, dan menerapkan atau menggulung balik sebagaimana mewajarkannya.)

Jika properti ConnectionCommand mengatur koneksi dengan objek koneksi yang ada dan properti Transaksi diatur ke TRUE, Beban Massal XML tidak mengeluarkan pernyataan COMMIT atau ROLLBACK dalam kasus keberhasilan atau kegagalan. Jika ada kesalahan, Beban Massal XML mengembalikan pesan kesalahan yang sesuai. Keputusan untuk mengeluarkan pernyataan COMMIT atau ROLLBACK diserahkan kepada klien yang memulai beban massal. Objek koneksi yang digunakan untuk Pemuatan Massal XML harus berjenis ICommand atau menjadi objek perintah ADO.

Di SQLXML 4.0, ConnectionObject tidak dapat digunakan dengan properti Transaksi yang diatur ke FALSE. Mode nontransaksi tidak didukung dengan ConnectionObject karena tidak mungkin membuka lebih dari satu antarmuka IRowsetFastLoad pada sesi yang diteruskan.