Чисто предположение:
- Файлът е
utf-8
кодирано (или всяко друго кодиране, SQL-Server 2008 не може да чете естествено).- Трябва да знаете, че SQL-Server е доста ограничен по отношение на файловите кодировки.
CHAR
(илиVARCHAR
) еextended ASCII 1-byte encoding
иNCHAR
(илиNVARCHAR
) еUCS-2 2-byte encoding
(което е почти идентично сUTF-16
). - С SQL-Server 2016 (и SP2 за v2014) беше въведена допълнителна поддръжка, особено за
utf-8
. - Опитайте да отворите своя XML с подходящ редактор (напр. notepad++) и опитайте да разберете кодирането на файла. Опитайте да запазите това като "unicode / UCS-2 / utf-16" и опитайте отново импортирането.
- Опитайте да използвате импортирането си с
CLOB
вместоBLOB
. Четене на файла като двоичен LargeObject ще вземе байтовете един след друг. SQL-Server ще се опита да прочете тези байтове като низ с фиксиран размер на знак. Характерса LOB може да работи при специални обстоятелства. - Проверете първите два байта за
BOM
(маркировка за ред на байтовете)
- Трябва да знаете, че SQL-Server е доста ограничен по отношение на файловите кодировки.
- Има малко мръсотия във вашия XML
- Отворете файла с HEX-редактор и се опитайте да намерите странни кодове
- Вашият код обработва съдържанието на файла в рамките на динамично създаден израз.
- В такива случаи понякога се сблъсквате с отрязване или прекъсване на низове
- Общ съвет:
- Ако импортирате данни и очаквате проблеми, силно се препоръчва да използвате подход в 2 стъпки
- Прочетете файла си в толерантна междинна таблица (с
NVARCHAR(MAX)
или дориVARBIANRY(MAX)
целеви колони) и опитайте да продължите с това. - Може да е необходимо да използвате друг инструмент, за да промените файла си преди импортирането.