2012-06-01 15 views
10

Mi mesa:SQL Server: String o datos binarios sería truncada

log_id     bigint 
old_value     xml 
new_value     xml 
module     varchar(50) 
reference_id   bigint 
[transaction]   varchar(100) 
transaction_status   varchar(10) 
stack_trace    ntext 
modified_on    datetime 
modified_by    bigint 

Insertar consulta:

INSERT INTO [dbo].[audit_log] 
      ([old_value],[new_value],[module],[reference_id],[transaction] 
      ,[transaction_status],[stack_trace],[modified_on],[modified_by]) 
    VALUES 
      ('asdf','asdf','Subscriber',4,'_transaction', 
      '_transaction_status','_stack_trace',getdate(),555) 

error:

Msg 8152, Level 16, State 14, Line 1 
String or binary data would be truncated. 
The statement has been terminated. 

Por qué es eso ???

+2

+1 para proporcionar suficiente información para comprender su pregunta. Sin embargo, casi lo retiré por no haber leído el mensaje de error y haber mirado tu SQL para captarlo tú mismo. :-) –

+1

Solo una sugerencia: si no está seguro de la longitud de los valores en Transaction_status, acceda a varchar (max) – praveen

+1

@praveen wow, eso no es una muy buena sugerencia. No sabe que no sabe cuánto tiempo será la columna, y la primera respuesta es averiguarlo. ¿Debo comprar una casa de 30 habitaciones en caso de que tenga 30 niños? Por supuesto no. –

Respuesta

42

Está intentando escribir más datos que los que una columna específica puede almacenar. Verifique los tamaños de los datos que intenta insertar en función de los tamaños de cada uno de los campos.

En este caso transaction_status es varchar (10) y está intentando almacenar 19 caracteres en él.

+5

+1. Pásame por 8 segundos. –

2

este tipo de error ocurre generalmente cuando se tiene que poner caracteres o valores más que haya especificado en la tabla de base de datos como en este caso: se especifica transaction_status varchar(10) pero en realidad se trata de almacenar
_transaction_status que contienen 19 personajes. es por eso que enfrentó este tipo de error en este código ..

2

Este error generalmente se encuentra al insertar un registro en una tabla donde una de las columnas es un tipo de datos VARCHAR o CHAR y la longitud del valor que se está insertando es más largo que la longitud de la columna.

No estoy satisfecho de cómo Microsoft decidió informar con este mensaje de respuesta "seco", sin ningún punto de dónde buscar la respuesta.

Cuestiones relacionadas