SQLSERVER建表最大行超每行最大字节数的解决方法

数据库 SQL Server
在SQLSERVER数据库中建表的时候,其最大行大小有可能会超过了每行的最大字节数(8060),下面就将为您分析其原因,以及解决的办法,供您参考。

如果SQLSERVER建表时,其***行的大小超过了每行的***字节数(8060),应该如如何进行处理呢?

一般出现这种现象都是适用sql文件在查询分析器里建库的时候,现象一般都是提示:
已创建表 'xxxx',但其***行大小(10438)超过了每行的***字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 Insert 或 Update 将失败。

其中xxxx是你的建的表名,10438是SQLSERVER建表语句中可变长度列(如 nvarchar 或 varbinary)的总长度,8060是SQL Server对行长度的***限制。

原因

其实把上面三个概念搞清楚,警告的原因就应该清楚了,就是因为你的建表语句中可变长度列的总长度超过了SQL Server对行***长度的限制8060。如果每一行中数据的总长度不超过8060 字节,就仍可以向表中插入行。但是如果数据超过8060 字节,因此系统提示你就会出现插入或更新操作失败。

错误提示:

服务器:信息 511,级别 16,状态 1,第 5 行
无法创建大小为 的行,该值大于允许的***值 8060。
语句已终止。

举个例子:比如我总共有10块钱,买A东西可能花1-5块,买B东西可能花2-3块,买C东西可能花3-6块,那我在做预算的时候就要提醒自己,如果ABC三个东西都要花上限的钱,那我的钱可就不够了,因为5+3+6=14 >10,虽然可能我只花了1+2+3=6块钱就把ABC全买了。

解决

知道问题的原因了,解决办法相对就简单了!

1、修改SQLSERVER建表语句中相应的列的数据类型或长度(如将nvarchar格式改成text),让可变长度列的加和小于8060。这样可以彻底避免出现上述错误发生,当然上述的错误并不是必然出现。

2、在绝大多数情况下不会出现各列长度超过行限制的时候(这个需要根据存储的数据的情况自行判断),你也可以忽略这个提示,这并不会必然影响到你正常的操作。
 

 

 

 

【编辑推荐】

SQL函数中的SUBSTRING函数

随机SQL函数示例

字符转换SQL函数

SQL自定义函数调用实例

SQL SERVER字段类型的说明

责任编辑:段燃 来源: 互联网
相关推荐

2010-10-19 15:45:32

SQL Server创

2010-11-23 10:11:23

mysql建表乱码

2009-10-14 15:44:04

VB.NET字节数组

2022-12-05 14:05:26

MySQL最大取值存储

2010-10-22 14:35:02

sql server系

2009-08-28 10:50:17

C#字节数组转换成字符

2010-11-24 09:37:01

mysql快速建表

2010-11-03 09:34:39

DB2临时表

2010-11-02 16:02:59

db2表空间

2010-09-16 15:36:26

SQL Server2

2010-07-15 14:01:12

telnet乱码

2010-10-22 15:59:59

sqlserver删除

2010-05-04 15:39:44

IT人才

2023-03-02 09:57:03

2011-03-01 13:40:45

500 OOPS

2009-12-17 10:09:02

ssh超时断开

2023-04-06 15:21:34

IIoT自动化

2010-10-22 15:36:57

2010-10-13 17:22:12

MySQL查询乱码

2009-07-03 18:14:27

Servlet线程安全
点赞
收藏

51CTO技术栈公众号