Sql 二进制数据截断错误消息(Msg 8152)
当数据插入到某个表时,我收到错误消息 该字段的数据类型为Sql 二进制数据截断错误消息(Msg 8152),sql,sql-server,database,Sql,Sql Server,Database,当数据插入到某个表时,我收到错误消息 该字段的数据类型为Varchar(20),插入的数据具有最大值 数据长度为6 我不明白问题出在哪里。虽然我可以通过添加 SET ANSI_WARNINGS OFF 但这将是一个解决办法,而不是一个解决方案: 看起来您的列模式名maxlength属性更小然后是要插入的值 根据数据更新列长度 ALTER TABLE Temp ALTER COLUMN SchemaName VARCHAR(XXXX) 目标表不足以容纳要插入的数据。看起来您的目标大小应该是va
Varchar(20)
,插入的数据具有最大值
数据长度为6
我不明白问题出在哪里。虽然我可以通过添加
SET ANSI_WARNINGS OFF
但这将是一个解决办法,而不是一个解决方案:
看起来您的列模式名maxlength属性更小然后是要插入的值 根据数据更新列长度
ALTER TABLE Temp ALTER COLUMN SchemaName VARCHAR(XXXX)
目标表不足以容纳要插入的数据。看起来您的目标大小应该是varchar(256),但您已经给出了varchar(10)。只需扩展列大小即可解决此问题 运行此DDL
Alter table temp alter column SchemaName varchar(256)
当列的大小小于它们时,会出现此错误。
更新列的大小。我刚刚找到了此问题的根本原因。 实际上,我正试图将
sysname
数据类型值插入varchar()
。
因此,必须指定适当的长度来保存数据类型。我不明白刚才提到的数据长度是12,所以使用“varchar(256)”sh.Name可能是nVARCHAR?可能是@MatthiasBurger的重复如果您不了解问题,那么至少不要评论。任何人都可以说“字段长度小于插入值”。
sh.name
是sysname
的类型,基本上是nvarchar(128)
,而schemaname类型是varchar
。这就是问题所在啊你已经找到问题了。。我看到+1-有点提示,sysname基本上是nvarchar(128)