Čisté hádání:
- Soubor je
utf-8encoded (nebo jakékoli jiné kódování, SQL-Server 2008 nemůže číst nativně).- Musíte vědět, že SQL-Server je značně omezený na kódování souborů.
CHAR(neboVARCHAR) jeextended ASCII 1-byte encodingaNCHAR(neboNVARCHAR) jeUCS-2 2-byte encoding(což je téměř totožné sUTF-16). - S SQL-Server 2016 (a SP2 pro v2014) byla zavedena další podpora, zejména pro
utf-8. - Zkuste otevřít XML pomocí vhodného editoru (např. notepad++) a pokuste se zjistit kódování souboru. Zkuste to uložit jako „unicode / UCS-2 / utf-16“ a opakujte import.
- Zkuste použít import s
CLOBmístoBLOB. Čtení souboru jako binárního LargeObject bude brát bajty jeden po druhém. SQL-Server se pokusí číst tyto bajty jako řetězec s pevnou velikostí na znak. Postava LOB může fungovat za zvláštních okolností. - Zkontrolujte, zda v prvních dvou bytech není
BOM(značka pořadí bajtů)
- Musíte vědět, že SQL-Server je značně omezený na kódování souborů.
- Je tam nějaká špína ve vašem XML
- Otevřete soubor pomocí HEX-editoru a pokuste se najít podivné kódy
- Váš kód zpracovává obsah souboru v rámci dynamicky vytvářeného příkazu.
- V takových případech se někdy setkáte s uvozovkami s zkrácením nebo přerušením řetězce
- Obecná nápověda:
- Pokud importujete data a očekáváte problémy, důrazně doporučujeme použít přístup ve dvou krocích
- Přečtěte svůj soubor do tolerantní pracovní tabulky (s
NVARCHAR(MAX)nebo dokonceVARBIANRY(MAX)cílové sloupce) a zkuste v tom pokračovat. - Pro změnu souboru před importem může být nutné použít jiný nástroj.