error, la cadena o los datos binarios se truncarían al intentar insertar
Estoy ejecutando el archivo data.bat con las siguientes líneas:
Rem Tis batch file will populate tables
cd\program files\Microsoft SQL Server\MSSQL
osql -U sa -P Password -d MyBusiness -i c:\data.sql
El contenido del archivo data.sql es:
insert Customers
(CustomerID, CompanyName, Phone)
Values('101','Southwinds','19126602729')
Hay 8 líneas más similares para agregar registros.
Cuando ejecuto esto con start
> run
> cmd
> c:\data.bat
, aparece este mensaje de error:
1>2>3>4>5>....<1 row affected>
Msg 8152, Level 16, State 4, Server SP1001, Line 1
string or binary data would be truncated.
<1 row affected>
<1 row affected>
<1 row affected>
<1 row affected>
<1 row affected>
<1 row affected>
Además, obviamente soy un novato, pero ¿qué significan Level #
y state #
cómo busco mensajes de error como el anterior: 8152?
De la respuesta de @gmmastros
Cada vez que veas el mensaje....
Cadena o datos binarios podrían truncarse
Piensa... El campo NO es lo suficientemente grande para contener mis datos.
Verifique la estructura de la tabla para la tabla de clientes. Creo que encontrará que la longitud de uno o más campos NO es lo suficientemente grande para contener los datos que está intentando insertar. Por ejemplo, si el campo Teléfono es un campo varchar(8) e intenta escribirle 11 caracteres, obtendrá este error.
Tuve este problema aunque la longitud de los datos era más corta que la longitud del campo. Resultó que el problema era tener otra tabla de registro (para seguimiento de auditoría), llenada por un activador en la tabla principal, donde también era necesario cambiar el tamaño de la columna.
En una de las INSERT
declaraciones, está intentando insertar una cadena demasiado larga en una columna de cadena ( varchar
o nvarchar
).
Si no es obvio quién INSERT
es el infractor con solo mirar el script, puedes contar las <1 row affected>
líneas que aparecen antes del mensaje de error. El número obtenido más uno le da el número de estado de cuenta. En su caso parece ser el segundo INSERT el que produce el error.