8152: String or binary data would be truncated(字符串或二进制数据将被截断)
SQL Server含义
你尝试写入长度超过列定义长度的数据。SQL Server 为防止数据丢失而终止该语句(2628 是同一错误的新版本,会报告列/值)。
原因
例如向 VARCHAR(10) 列写入 15 个字符、目标列比源列窄、数据类型/长度不匹配,或 ETL/传输中字段长度不足。
解决方法
加宽列以容纳数据(ALTER TABLE ... ALTER COLUMN)或缩短数据。在 SQL Server 2019+ 上使用错误 2628,它会显示溢出的表/列/值;在旧版本上,用 LEN() 逐列检查以找出有问题的行。在传输中对齐源与目标的 schema 长度。
同一数据库的其他条目
- 2601Cannot insert duplicate key row in object with unique index. The duplicate key value is ...(不能在具有唯一索引的对象中插入重复键行。重复键值为 ...)
- 547The INSERT/UPDATE/DELETE statement conflicted with the FOREIGN KEY / CHECK constraint(INSERT/UPDATE/DELETE 语句与 FOREIGN KEY / CHECK 约束冲突)
- 18456Login failed for user(用户登录失败)
- 2628String or binary data would be truncated in table, column ...; truncated value(表、列 ... 中的字符串或二进制数据将被截断;截断的值)
- 1222Lock request time out period exceeded(已超过锁请求超时时段)
- 9002The transaction log for database is full due to ...(数据库的事务日志已满,原因为 ...)
- 1105Could not allocate space for object in database because the filegroup is full(由于文件组已满,无法在数据库中为对象分配空间)