Tebakan murni:
- Berkasnya adalah
utf-8
dikodekan (atau penyandian lainnya, SQL-Server 2008 tidak dapat membaca secara asli).- Anda harus tahu, bahwa SQL-Server agak terbatas dengan pengkodean file.
CHAR
(atauVARCHAR
) adalahextended ASCII 1-byte encoding
danNCHAR
(atauNVARCHAR
) adalahUCS-2 2-byte encoding
(yang hampir identik denganUTF-16
). - Dengan SQL-Server 2016 (dan SP2 untuk v2014) beberapa dukungan lebih lanjut diperkenalkan, terutama untuk
utf-8
. - Coba buka XML Anda dengan editor yang sesuai (misalnya notepad++) dan coba cari tahu penyandian file. Coba simpan ini sebagai "unicode / UCS-2 / utf-16" dan coba impor lagi.
- Coba gunakan impor Anda dengan
CLOB
bukannyaBLOB
. Membaca file sebagai biner LargeObject akan mengambil byte satu demi satu. SQL-Server akan mencoba membaca byte ini sebagai string dengan ukuran tetap per karakter. Sebuah karakter LOB mungkin bekerja dalam keadaan khusus. - Periksa dua byte pertama untuk
BOM
(tanda urutan byte)
- Anda harus tahu, bahwa SQL-Server agak terbatas dengan pengkodean file.
- Ada kotoran dalam XML Anda
- Buka file dengan editor HEX dan coba temukan kode aneh
- Kode Anda memproses konten file dalam pernyataan yang dibuat secara dinamis.
- Dalam kasus seperti itu, terkadang Anda mengalami pemotongan atau tanda kutip
- Petunjuk umum:
- Jika Anda mengimpor data dan mengalami masalah, sangat disarankan untuk menggunakan pendekatan 2 langkah
- Baca file Anda ke dalam tabel staging yang toleran (dengan
NVARCHAR(MAX)
atau bahkanVARBIANRY(MAX)
kolom target) dan coba lanjutkan dengan ini. - Mungkin perlu menggunakan alat lain untuk mengubah file Anda sebelum mengimpor.