需求:现在有列:text类型与varchar类型的,需要将其转换为Ntext(Nvarchar(max))与nvarchar类型但数据库中数据有几百万条数据,直接改类型怕出现问题,所以目前想法是新增2个新列,对应相应的字段。
然后再将数据导入到新增的这2列中,然后再把原始的列给删了,最后将列重命名回去。我想知道的是这样做会对数据造成影响吗,或者有其它的解决方案,谢谢!

解决方案 »

  1.   

    直接修改类型也不会出问题,如果问题,你新增两列的方法也是一样出问题的,text改为ntext可以。ntext该为text就难免出问题了。
      

  2.   

    直接修改,但是在修改之前需要关闭应用程序,选择无人连接的时间操作注意:text、ntext以后都是不支持的,应该直接用varchar(max)和nvarchar(max)
      

  3.   

    删除text和varchar等的列会带来部分空间不能回收,需要用专门命令回收,另外产生碎片,这些都是带来的问题。更大的问题是,可能修改过程出现数据丢失或者其他问题,所以操作前一定要备份。
      

  4.   


     改名
     建表(修改字段定义)
     insert tablename(...) select ... from oldtable
     检查
     drop table oldtable
     这样可能跟安全,高效