2013-02-06 38 views
0
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') 

消息8152,级别16,状态4,行1 字符串或二进制数据将被截断。 该声明已被终止。无法将数据插入到数据库中的字符串或二进制数据将被截断

enter image description here

注:我的表中有空格[的UserLevel],因为它是由这种方式从之前

+4

摆脱那个fr tra的尾随空间!这是荒谬的。谈论技术债务! –

+1

“User_Level_ID”是标识列吗?还有一个方面,'Delete-Flag'和'Deactivate_Flag'听起来应该是'BIT'列。 – Arran

+0

由于所有的列都是可空的(PK除外),为什么你输入空字符串进入一些未知值呢?你可能根本没有插入它们,并将它们留为空。 – Bridge

回答

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') 
相关问题