Bagikan melalui


Panduan dan Batasan Pembaruan XML (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure SQL Database

Ingat hal berikut saat menggunakan pembaruan XML:

  • Jika Anda menggunakan updategram untuk operasi penyisipan hanya dengan sepasang <blok sebelum> dan< sesudah>,< blok sebelum> dapat dihilangkan. Sebaliknya, jika terjadi operasi penghapusan, <blok setelah> dapat dihilangkan.

  • Jika Anda menggunakan updategram dengan beberapa blok sebelum> dan <sesudah> dalam< tag sinkronisasi>, baik< sebelum> blok dan <setelah> blok harus ditentukan untuk membentuk< sebelum> dan <sesudah> pasangan.<

  • Pembaruan dalam updategram diterapkan ke tampilan XML yang disediakan oleh skema XML. Oleh karena itu, agar pemetaan default berhasil, Anda harus menentukan nama file skema dalam updategram atau, jika nama file tidak disediakan, elemen dan nama atribut harus cocok dengan nama tabel dan kolom dalam database.

  • SQLXML 4.0 mengharuskan semua nilai kolom dalam updategram harus dipetakan secara eksplisit dalam skema (baik XDR atau XSD) yang disediakan untuk menyusun tampilan XML untuk elemen turunannya. Perilaku ini berbeda dari versi SQLXML sebelumnya, yang memungkinkan nilai untuk kolom yang tidak dipetakan dalam skema jika tersirat sebagai bagian dari Kunci asing dalam anotasi sql:relationship . (Perhatikan bahwa perubahan ini tidak memengaruhi penyebaran nilai kunci primer ke elemen turunan, yang masih terjadi untuk SQLXML 4.0 jika tidak ada nilai yang secara eksplisit ditentukan untuk elemen turunan.

  • Jika Anda menggunakan updategram untuk memodifikasi data dalam kolom biner (seperti jenis data gambar SQL Server), Anda harus menyediakan skema pemetaan di mana tipe data SQL Server (misalnya, sql:datatype="image") dan jenis data XML (misalnya, dt:type="binhex" atau dt:type="binbase64) harus ditentukan. Data untuk kolom biner harus ditentukan dalam updategram; anotasi sql:url-encode yang ditentukan dalam skema pemetaan diabaikan oleh updategram.

  • Saat Anda menulis skema XSD, jika nilai yang Anda tentukan untuk anotasi sql:relation atau sql:field menyertakan karakter khusus, seperti karakter spasi (misalnya, dalam nama tabel "Detail Pesanan"), nilai ini harus diapit dalam tanda kurung siku (misalnya, "[Detail Pesanan]").

  • Saat menggunakan updategram, hubungan rantai tidak didukung. Misalnya, jika tabel A dan C terkait melalui hubungan rantai yang menggunakan tabel B, kesalahan berikut akan terjadi saat mencoba menjalankan dan menjalankan updategram:

    There is an inconsistency in the schema provided.  
    

    Bahkan jika skema dan updategram benar dan terbentuk secara valid, kesalahan ini akan terjadi jika ada hubungan rantai.

  • Updategram tidak mengizinkan lolosnya data jenis gambar sebagai parameter selama pembaruan.

  • Jenis objek besar biner (BLOB) seperti teks/ntext dan gambar tidak boleh digunakan di <blok sebelum> saat bekerja dengan updategram, karena ini akan menyertakannya untuk digunakan dalam kontrol konkurensi. Ini dapat menyebabkan masalah dengan SQL Server karena keterbatasan perbandingan untuk jenis BLOB. Misalnya, kata kunci LIKE digunakan dalam klausa WHERE untuk membandingkan antara kolom jenis data teks ; namun, perbandingan akan gagal dalam kasus jenis BLOB di mana ukuran data lebih besar dari 8K.

  • Karakter khusus dalam data ntext dapat menyebabkan masalah dengan SQLXML 4.0 karena batasan perbandingan untuk jenis BLOB. Misalnya, penggunaan "[Serializable]" di <blok sebelum> updategram ketika digunakan dalam pemeriksaan konkurensi kolom jenis ntext akan gagal dengan deskripsi kesalahan SQLOLEDB berikut:

    Empty update, no updatable rows found   Transaction aborted  
    

Lihat Juga

Pertimbangan Keamanan Updategram (SQLXML 4.0)