Puras suposiciones:
- El archivo es
utf-8codificado (o cualquier otra codificación, SQL-Server 2008 no puede leer de forma nativa).- Debe saber que SQL-Server está bastante limitado con las codificaciones de archivos.
CHAR(oVARCHAR) esextended ASCII 1-byte encodingyNCHAR(oNVARCHAR) esUCS-2 2-byte encoding(que es casi idéntico aUTF-16). - Con SQL-Server 2016 (y SP2 para v2014) se introdujo más soporte, especialmente para
utf-8. - Intente abrir su XML con un editor adecuado (p. ej., notepad++) e intente averiguar la codificación del archivo. Intente guardar esto como "unicode/UCS-2/utf-16" y vuelva a intentar la importación.
- Intenta usar tu importación con
CLOBen lugar deBLOB. Leyendo el archivo como binario LargeObject tomará los bytes uno tras otro. SQL-Server intentará leer estos bytes como una cadena con un tamaño fijo por carácter. Un personaje LOB podría funcionar en circunstancias especiales. - Verifique los primeros dos bytes para un
BOM(marca de orden de bytes)
- Debe saber que SQL-Server está bastante limitado con las codificaciones de archivos.
- Hay algo de suciedad dentro de su XML
- Abra el archivo con un editor HEX e intente encontrar códigos extraños
- Su código procesa el contenido del archivo dentro de una declaración creada dinámicamente.
- En tales casos, a veces se encuentra con comillas truncadas o que rompen cadenas
- Sugerencia general:
- Si importa datos y espera problemas, se recomienda utilizar un enfoque de 2 pasos
- Lea su archivo en una tabla de preparación tolerante (con
NVARCHAR(MAX)o inclusoVARBIANRY(MAX)columnas de destino) e intente continuar con esto. - Puede ser necesario usar otra herramienta para cambiar su archivo antes de la importación.