SQL中的限制,每条记录的实际存储长度不能超过8060字节当你的表结构发生变化时,SQL就会做此检查,检查你创建的表,每个字段定义的长度之和是否超出8060字节,如果超出了,则会给出此警告 只要你实际往表中存储数据的时候,保证每条记录的总长度不超过此长度,可以完全不理会这个警告

解决方案 »

  1.   

    --示例--创建一个表
    create table tb(a varchar(8000),b varchar(8000)--因为a+b列定义的长度8000+8000=16000,已经超过了8060,此时会有警告 --实际插入记录
    insert tb values('a','b')--因为插入的数据,datalength('a')+datalength('b')=2 <8060,所以不会有问题
    --再插入记录
    insert tb select replicate('a',8000),replicate('b' ,100)--此时就会出问题了,这条记录的总长度超过了8060
      

  2.   

    贴:
    下表说明在 Microsoft SQL Server 数据库中定义的,或在 Transact-SQL 语句中引用的各种对象的最大值(数量或大小)。下表不包含 Microsoft&reg; SQL Server 2000&#8482; Windows&reg; CE 版。  最大值(数量或大小) 
    对象 SQL Server 7.0 SQL Server 2000 
    批处理大小 65,536 * 网络数据包大小1 65,536 * 网络数据包大小1 
    每个短字符串列的字节数 8,000 8,000 
    每个 text、ntext、或 image 列的字节数 2 GB-2 2 GB-2 
    每个 GROUP BY、ORDER BY的字节数 8,060   
    每个索引中的字节数 900 9002 
    每个外键的字节数 900 900 
    每个主键的字节数 900 900 
    每行字节数 8,060 8,060 
      

  3.   

    但是我定义的表字段总长度未超过8060啊,除了一个字段是nvarchar(4000)外,其它字段都很小
      

  4.   

    nvarchar(4000)!! --Unicode存储 一个好像是2字节
      

  5.   

    是的nvarchar(4000)就占了8000个字节,再加上其他列,你肯定是超过了8060