Tebakan murni:
- Berkasnya adalah
utf-8dikodekan (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 encodingdanNCHAR(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
CLOBbukannyaBLOB. 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.