Adivinhação pura:
- O arquivo é
utf-8
codificado (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 encoding
eNCHAR
(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
CLOB
em 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.