一、现象
出现这种错误都发生在SQL语句建表时,错误提示:
二、原因
为什么说每行的最大长度是8096字节?
因为在SQL SERVER中,记录Record是顺序存放在数据页中的,每一个数据页的可存储空间最大为8096字节(8K-页头的96字节,8192-96=8096),而SQL Server中行是不能跨数据页的。
因此,如果你的建表语句中可变长度列的总长度超过了8096字节,就意味着SQL Server的数据页都装不下这条记录了,系统当然就会提示错误。
三、解决
知道问题的原因了,解决办法相对就简单了!
1、修改你建表语句中相应的列的数据类型或长度(如将nvarchar格式改成text),让可变长度列的加和小于8060。这样可以彻底避免出现上述错误发生,当然上述的错误并不是必然出现。
2、在绝大多数情况下不会出现各列长度超过行限制的时候(这个需要根据存储的数据的情况自行判断),你也可以忽略这个提示,这并不会必然影响到你正常的操作。