SQLSERVER建表最大行超每行最大字节数的解决方法 |
本文标签:SQLSERVER建表 如果SQLSERVER建表时,其最大行的大小超过了每行的最大字节数(8060),应该如如何进行处理呢? 一般出现这种现象都是适用sql文件在查询分析器里建库的时候,现象一般都是提示: 其中xxxx是你的建的表名,10438是SQLSERVER建表语句中可变长度列(如 nvarchar 或 varbinary)的总长度,8060是SQL Server对行长度的最大限制 。 原因 其实把上面三个概念搞清楚,警告的原因就应该清楚了,就是因为你的建表语句中可变长度列的总长度超过了SQL Server对行最大长度的限制8060 。如果每一行中数据的总长度不超过8060 字节,就仍可以向表中插入行 。但是如果数据超过8060 字节,因此系统提示你就会出现插入或更新操作失败 。 错误提示: 服务器:信息 511,级别 16,状态 1,第 5 行 举个例子:比如我总共有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、在绝大多数情况下不会出现各列长度超过行限制的时候(这个需要根据存储的数据的情况自行判断),你也可以忽略这个提示,这并不会必然影响到你正常的操作 。
|