Problema al insertar datos en un campo varchar utilizando un procedimiento almacenado

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy cargando algunos datos de DB2 a SQL2005. La tabla contiene un campo de texto que tiene 2000 caracteres de longitud en DB2 pero está configurado como varchar (2000) en SQL.

Cuando ejecuto mi inserción en el navegador de consultas, se procesa bien y los datos se copian correctamente; sin embargo, cuando se ejecuta la misma instrucción en mi procedimiento almacenado, los datos de este campo solo se copian de forma incorrecta y se muestran como una serie de caracteres extraños.

El campo puede contener ocasionalmente caracteres de control, sin embargo, el problema ocurre incluso cuando no lo hace.

¿Hay alguna configuración que deba aplicar a mi procedimiento almacenado para que la inserción funcione correctamente?

¿O necesito usar una conversión o conversión en los datos para que aparezca correctamente?

Gracias.

Actualización: Gracias por tus sugerencias. Ahora parece que el problema fue causado por el software que usamos para crear el servidor vinculado que contiene la base de datos DB2. Esto no puede manejar un campo de 2000 caracteres de longitud cuando se ejecuta a través de un procedimiento almacenado, pero puede cuando se ejecuta de forma interactiva.

Finalmente resolví el problema uniendo el campo en campos de 10 200 caracteres para la carga y luego volví a unirme a ellos cuando estaban en la base de datos SQL.

¿Fue útil?

Solución 3

Este problema fue causado por el software de terceros que usamos para crear el servidor vinculado a la base de datos DB2. Esto no puede manejar un campo de 2000 caracteres de longitud cuando se ejecuta a través de un procedimiento almacenado, pero puede cuando se ejecuta de forma interactiva.

Finalmente resolví el problema uniendo el campo en campos de 10 200 caracteres para la carga y luego volví a unirme a ellos cuando estaban en la base de datos SQL.

Otros consejos

Parece que los datos que provienen de db2 están en un conjunto de caracteres diferente. Debes asegurarte de que no sea EBCDIC o algo así.

Además, intente llamar a su procedimiento almacenado desde SQL Server Management Studio (navegador de consultas), para ver si funciona en absoluto.

Es posible que desee cambiar su varchar (2000) a un nvarchars (2000) (tanto en el procedimiento almacenado como en la tabla, supongo que existe como parámetro). Esto les permitiría mantener dos caracteres de byte. Dependerá de la configuración de DB2, pero puede ser que esté exportando UTF-16 (o similar) en lugar de UTF-8.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top