修改数据库表字段
alter table dbo.TB_Object alter column Note text null
报以下错误:
不能创建大小为 8070 的行,该大小大于所允许的最大行大小 8060。字段原来的类型是nvarchar(4000) 
使用中,客户反映4000不够长,就想改为text,谁知竟然报错求高手指导

解决方案 »

  1.   

    你改成nvarchar(max)行不?另外,如果要换text,要改成ntext
      

  2.   

    楼主应该是SQL2K。是警告还是报错了?如果是警告只是后面插入或者修改超过范围的话会出错。最好升级成2K5以上方便操作大文本类型。
      

  3.   

    这个帖子里面说的很详细http://topic.csdn.net/u/20120410/21/d68b2ec3-fcf2-4e39-b0e5-038e7fb0dfaa.html
      

  4.   

    如果非要是TEXT的话,先改成NVARCHAR(MAX),再改成TEXT。
      

  5.   


    不行,不管是nvarchar(max)还是ntext都报错:
    消息 511,级别 16,状态 1,第 1 行
    不能创建大小为 8070 的行,该大小大于所允许的最大行大小 8060。

    语句已终止。
      

  6.   

    不管是改成nvarchar(max)还是text,ntext都报同样的错误:消息 511,级别 16,状态 1,第 1 行
    不能创建大小为 8070 的行,该大小大于所允许的最大行大小 8060。

    语句已终止。
      

  7.   

    而且现在对这个表查询所有就会报以下错误:
    消息 64,级别 20,状态 0,第 0 行
    在从服务器接收结果时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 指定的网络名不再可用。)

    但是可以对表进行备份select * into tb_tempt from TB_Object
    表有1353行数据,查询所有的时候查到1275条就卡住了
    会不会是数据的问题导致不能修改字段长度?
      

  8.   

    同一行非大数据字段的总长度不能超过8060,放到其他表再update回来就行了