Cuando obtiene este error, lo primero que pregunta es, ¿qué columna? Lamentablemente, SQL Server es sin ayuda aquí. Entonces comienzas haciendo prueba y error. Bueno, ahora tengo una declaración como:Cadena o datos binarios se truncarán - Problema de Heisenberg
INSERT tbl (A, B, C, D, E, F, G)
SELECT A, B * 2, C, D, E, q.F, G
FROM tbl
,othertable q
WHERE etc etc
Tenga en cuenta que
- Algunos valores se modifican o vinculados desde otra mesa, pero la mayoría de los valores están llegando de la tabla original, por lo que realmente no puede causar truncamiento volviendo al mismo campo (que yo sepa).
- campos eliminación de uno a la vez con el tiempo hace que el error desaparece, si lo hago de forma acumulativa, pero — y aquí viene lo bueno — no importa qué campos elimino. Es como si SQL Server se estuviera oponiendo a la longitud total de la fila, lo que dudo, ya que solo hay unos 40 campos en total, y nada grande.
¿Alguien ha visto esto antes?
Gracias.
ACTUALIZACIÓN: También hice pruebas "horizontales", filtrando el SELECT, con el mismo resultado. En otras palabras, si yo digo
- donde id entre 1 y 100: Error
- donde id entre 1 y 50: No hay error
- donde id entre 50 y 100: No hay error
Probé muchas combinaciones, y no puede limitarse a una sola fila.
Como auxiliar de depuración: podría intentar escribir un cursor que pase por la tabla fuente e insertar las filas una a una. Tal vez el error se encuentra en una de las filas? – Tomalak
¿Cuáles son las restricciones de clave foriegn? ¿Hay alguno? –
@Vecdid: no, no hay restricciones de ningún tipo, ni siquiera una clave principal. Es solo una copia desechable de una tabla remota, utilizada solo durante esta rutina, creada por SELECT * INTO. – harpo