Pura supposizione:
- Il file è
utf-8
codificato (o qualsiasi altra codifica, SQL-Server 2008 non può leggere in modo nativo).- Devi sapere che SQL-Server è piuttosto limitato con le codifiche dei file.
CHAR
(oVARCHAR
) èextended ASCII 1-byte encoding
eNCHAR
(oNVARCHAR
) èUCS-2 2-byte encoding
(che è quasi identico aUTF-16
). - Con SQL-Server 2016 (e SP2 per v2014) è stato introdotto un ulteriore supporto, in particolare per
utf-8
. - Prova ad aprire il tuo XML con un editor appropriato (es. notepad++) e prova a scoprire la codifica del file. Prova a salvarlo come "unicode / UCS-2 / utf-16" e riprova a importare.
- Prova a utilizzare l'importazione con
CLOB
invece diBLOB
. Lettura del file come binario LargeObject prenderà i byte uno dopo l'altro. SQL-Server proverà a leggere questi byte come stringa con dimensione fissa per carattere. Un personaggio LOB potrebbe funzionare in circostanze speciali. - Controlla i primi due byte per una
BOM
(segno dell'ordine dei byte)
- Devi sapere che SQL-Server è piuttosto limitato con le codifiche dei file.
- C'è un po' di sporcizia all'interno del tuo XML
- Apri il file con un editor HEX e prova a trovare codici strani
- Il tuo codice elabora il contenuto del file all'interno di un'istruzione creata dinamicamente.
- In questi casi a volte ti imbatti in virgolette troncate o che interrompono le stringhe
- Suggerimento generale:
- Se importi dati e prevedi problemi, ti consigliamo vivamente di utilizzare un approccio in due passaggi
- Leggi il tuo file in una tabella di staging tollerante (con
NVARCHAR(MAX)
o ancheVARBIANRY(MAX)
colonne target) e prova a continuare con questo. - Potrebbe essere necessario utilizzare un altro strumento per modificare il file prima dell'importazione.