无法将数据插入数据库字符串或二进制数据将被截断

时间:2013-02-06 09:35:29

标签: sql sql-server-2008 insert

 INSERT INTO [CVSUAT].[dbo].[UserLevel ]( 
  [Client_ID]
  ,[User_Level_Name]
  ,[User_Level_Description]
  ,[Created_by]
  ,[Created_Date]
  ,[Modified_by]
  ,[Modified_Date]
  ,[Delete_Flag]
  ,[Deactivate_Flag]) VALUES ('sndbsndbsdnbsndbsnbdnsbdn23','Client','','Client','2013-03-12 21:31:38.437','Client','2013-03-12 21:31:38.437','0','0')

Msg 8152,Level 16,State 4,Line 1 字符串或二进制数据将被截断。 声明已经终止。

enter image description here

注意:我的表有一个空间[UserLevel],因为它是从之前开始的

1 个答案:

答案 0 :(得分:1)

这是因为尝试将过多数据放入列中。

问题是,示例中指定的值都不会对架构图片中指示的列太大。因此,我假设您给我们的值不是真值,或者您在该表上有触发器,这实际上是导致错误的原因。

顺便说一句,您的Delete_FlagDeactivate_Flag列不应该是数据类型位而不是char(1)吗?

修改

哦,还有一件事 - 因为Client_ID是一个nvarchar,你可能想在那里存储unicode数据。要在脚本中指明这一点,您应该在字符串上使用“N”前缀,如下所示:

INSERT INTO [CVSUAT].[dbo].[UserLevel ]( 
  [Client_ID]
  ,[User_Level_Name]
  ,[User_Level_Description]
  ,[Created_by]
  ,[Created_Date]
  ,[Modified_by]
  ,[Modified_Date]
  ,[Delete_Flag]
  ,[Deactivate_Flag]) VALUES (N'sndbsndbsdnbsndbsnbdnsbdn23','Client','','Client','2013-03-12 21:31:38.437','Client','2013-03-12 21:31:38.437','0','0')