Problema inserir dados em um campo varchar usando um procedimento armazenado

StackOverflow https://stackoverflow.com/questions/801978

  •  03-07-2019
  •  | 
  •  

Pergunta

Estou carregar alguns dados de DB2 para SQL2005. A tabela contém um campo de texto que é de 2000 caracteres no DB2, mas está configurado como um varchar (2000) em SQL.

Quando eu executar o meu inserção no navegador consulta processa multa e os dados são copiados corretamente, no entanto, quando a mesma declaração é executado em meu procedimento armazenado os dados para esse campo só é copiado incorretamente e é mostrado como uma série de caracteres estranhos.

O campo pode ocasionalmente conter caracteres de controle no entanto, o problema ocorre mesmo quando isso não acontece.

Existe uma configuração que eu preciso para aplicar ao meu procedimento armazenado, a fim de obter a inserção ao trabalho corretamente?

ou eu preciso de usar um molde ou converso com os dados, a fim de obtê-lo aparecendo corretamente.

Graças.

Update: Obrigado por suas sugestões. Parece agora que o problema foi causado pelo software que usamos para criar o servidor vinculado que contém o banco de dados DB2. Isso não poderia lidar com um campo de 2000 caracteres longo quando executado através de um procedimento armazenado, mas poderia quando executado de forma interativa.

I, em última análise tem em torno do problema por splicing o campo em 10 200 caracteres longos campos para o upload e, em seguida, re-juntou-los novamente quando eles estavam no banco de dados SQL.

Foi útil?

Solução 3

Este problema foi causado pelo software 3rd party que usamos para criar o servidor vinculado ao banco de dados DB2. Isso não poderia lidar com um campo de 2000 caracteres longo quando executado através de um procedimento armazenado, mas poderia quando executado de forma interativa.

I, em última análise tem em torno do problema por splicing o campo em 10 200 caracteres longos campos para o upload e, em seguida, re-juntou-los novamente quando eles estavam no banco de dados SQL.

Outras dicas

Parece que os dados provenientes do DB2 está em um conjunto de caracteres diferente. Você deve se certificar de que não é EBCDIC ou algo parecido.

Além disso, tente ligar para o procedimento armazenado do SQL Server Management Studio (navegador consulta), para ver se ele funciona em tudo.

Você pode querer mudar a sua varchar (2000) para um nvarchars (2000) (no procedimento armazenado, bem como a mesa - i assumir que existe como um parâmetro). Isto permitir-lhes a realização de dois caracteres de byte. Vai depender da configuração do DB2, mas pode ser que ele está exportando UTF-16 (ou similar), em vez de UTF-8.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top