Čisté hádání:
- Soubor je
utf-8
encoded (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 encoding
aNCHAR
(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
CLOB
mí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.