Puur gissen:
- Het bestand is
utf-8
gecodeerd (of een andere codering, SQL-Server 2008 kan niet native lezen).- Je moet weten dat SQL-Server nogal beperkt is met bestandscoderingen.
CHAR
(ofVARCHAR
) isextended ASCII 1-byte encoding
enNCHAR
(ofNVARCHAR
) isUCS-2 2-byte encoding
(wat bijna identiek is aanUTF-16
). - Met SQL-Server 2016 (en SP2 voor v2014) werd wat meer ondersteuning geïntroduceerd, vooral voor
utf-8
. - Probeer je XML te openen met een geschikte editor (bijvoorbeeld notepad++) en probeer de codering van het bestand te achterhalen. Probeer dit op te slaan als "unicode / UCS-2 / utf-16" en probeer de import opnieuw.
- Probeer je import te gebruiken met
CLOB
in plaats vanBLOB
. Het bestand lezen als binair LargeObject neemt de bytes één voor één in beslag. SQL-Server zal proberen deze bytes te lezen als string met een vaste grootte per karakter. Een karakter LOB werkt mogelijk onder speciale omstandigheden. - Controleer de eerste twee bytes voor een
BOM
(byte-volgordemarkering)
- Je moet weten dat SQL-Server nogal beperkt is met bestandscoderingen.
- Er is wat vuil binnen uw XML
- Open het bestand met een HEX-editor en probeer vreemde codes te vinden
- Uw code verwerkt de inhoud van het bestand in een dynamisch gemaakte instructie.
- In dergelijke gevallen kom je soms truncatie- of tekenreeksbrekende aanhalingstekens tegen
- Algemene hint:
- Als u gegevens importeert en u problemen verwacht, wordt het ten zeerste aanbevolen om een 2-stappenaanpak te gebruiken
- Lees uw bestand in een tolerante verzameltabel (met
NVARCHAR(MAX)
of zelfsVARBIANRY(MAX)
doelkolommen) en probeer hiermee verder te gaan. - Het kan nodig zijn om een ander hulpmiddel te gebruiken om uw bestand te wijzigen vóór het importeren.