Adivinhação pura:
- O arquivo é
utf-8codificado (ou qualquer outra codificação, o SQL-Server 2008 não pode ler nativamente).- Você deve saber que o SQL-Server é bastante limitado com codificações de arquivos.
CHAR(ouVARCHAR) éextended ASCII 1-byte encodingeNCHAR(ouNVARCHAR) éUCS-2 2-byte encoding(que é quase idêntico aoUTF-16). - Com o SQL-Server 2016 (e SP2 para v2014), algum suporte adicional foi introduzido, especialmente para
utf-8. - Tente abrir seu XML com um editor apropriado (por exemplo, notepad++) e tente descobrir a codificação do arquivo. Tente salvá-lo como "unicode / UCS-2 / utf-16" e tente novamente a importação.
- Tente usar sua importação com
CLOBem vez deBLOB. Lendo o arquivo como binário LargeObject levará os bytes um após o outro. O SQL-Server tentará ler esses bytes como string com tamanho fixo por caractere. Um personagem O LOB pode funcionar em circunstâncias especiais. - Verifique os dois primeiros bytes para um
BOM(marca de ordem de bytes)
- Você deve saber que o SQL-Server é bastante limitado com codificações de arquivos.
- Há alguma sujeira dentro do seu XML
- Abra o arquivo com um editor HEX e tente encontrar códigos estranhos
- Seu código processa o conteúdo do arquivo em uma instrução criada dinamicamente.
- Nesses casos, às vezes você encontra truncamento ou aspas que quebram a string
- Dica geral:
- Se você importa dados e espera problemas, é altamente recomendável usar uma abordagem em duas etapas
- Leia seu arquivo em uma tabela de preparo tolerante (com
NVARCHAR(MAX)ou mesmoVARBIANRY(MAX)colunas de destino) e tente continuar com isso. - Pode ser necessário usar outra ferramenta para alterar seu arquivo antes da importação.