根据需求改变,原来表中一个字段 为 varchar(10),现在需增加到 varchar(50) 。   表中数据库有五百多万条 拉。。    我直接到表中去改 其大小,每次都提示 操作超时 失败..    请问怎么改?????

解决方案 »

  1.   

    这个就是可以直接改的,你是不是用的是SQL 2008,2008默认设置是不可以直接改的,你要在设置里将参数改过来,允许直接改表就可以了
      

  2.   

    你可以先删除该列,然后再加上一个新的列:
    alter table tablename
    drop column colname
    alter table tablename
    add colname varchar(50)
      

  3.   

    首先你要选择在没有其他用户对该表进行操作的时间进行修改。
    其次如果是2008,那么你需要在“工具”——“选项”——“Designers”那里把“阻止保存要求重新创建表的更改”前面的勾去掉,然后就可以通过GUI界面或者直接使用ALTER语句来修改了。
      

  4.   


    alter table tbname alter column colName varchar(50) --修改列的类型
      

  5.   


      这种操作的可行性与服务器的硬件环境有很大关系,如果设备好,直接改没有问题,否则很容易出问题。  建议:
      1.先新增加一个字段如:b,数据类型varchar(50) 。
      2.分批把原来字段(如:a)值更新到b
          update tablename set b=a where b='' and id<100000
      
      3.如果还要用以前的字段名,则把a删除,再把b改为a。
      

  6.   

    先看一下“工具”——“选项”——“Designers”那里把“阻止保存要求重新创建表的更改”这个是否勾去,如果没有,勾掉修改,如果不行。
    然后尝试用7楼的方法。先增加一个字段批量更新,然后再把原来的删除掉。不过应该是可以直接更新的,我之前也修改过SQL SERVER08 R2没有遇到这个问题的。 直接语句改。