Ren gissning:
- Filen är
utf-8
kodad (eller någon annan kodning, SQL-Server 2008 kan inte läsas inbyggt).- Du måste veta att SQL-Server är ganska begränsad med filkodningar.
CHAR
(ellerVARCHAR
) ärextended ASCII 1-byte encoding
ochNCHAR
(ellerNVARCHAR
) ärUCS-2 2-byte encoding
(vilket är nästan identiskt medUTF-16
). - Med SQL-Server 2016 (och SP2 för v2014) introducerades ytterligare stöd, särskilt för
utf-8
. - Försök att öppna din XML med en lämplig editor (t.ex. anteckningar++) och försök ta reda på filens kodning. Försök att spara detta som "unicode / UCS-2 / utf-16" och försök importera igen.
- Försök att använda din import med
CLOB
istället förBLOB
. Läser filen som binär LargeObject tar byten en efter en. SQL-Server kommer att försöka läsa dessa byte som sträng med fast storlek per tecken. En karaktär LOB kan fungera under speciella omständigheter. - Kontrollera de två första byten för en
BOM
(byteordningsmärke)
- Du måste veta att SQL-Server är ganska begränsad med filkodningar.
- Det finns en del smuts i din XML
- Öppna filen med en HEX-editor och försök hitta konstiga koder
- Din kod bearbetar filens innehåll i en dynamiskt skapad sats.
- I sådana fall stöter du ibland på trunkering eller strängbrytande citattecken
- Allmänt tips:
- Om du importerar data och du förväntar dig problem rekommenderas det starkt att du använder en tvåstegsmetod
- Läs din fil i en tolerant mellanställningstabell (med
NVARCHAR(MAX)
eller till och medVARBIANRY(MAX)
målkolumner) och försök fortsätta med detta. - Det kan vara nödvändigt att använda ett annat verktyg för att ändra din fil innan importen.