日期:2014-05-19  浏览次数:20549 次

如何批量修改数据类型sqlserver2000
我想把表里的一种数据类型改成另一种
nchar(100)---> nvarchar(100)
或者修改数据库中所有的一种数据类型改成另一种

------解决方案--------------------
这想法比较危险,当年异想天开改了一下,结果不久以后数据库整个就崩溃了,并且是客户的.
------解决方案--------------------
用下面的吧,与类型相关的存储过程,程序等自己要小心,下面能改类型,不是直接修改系统。
declare i cursor for
select a.name tab_name,b.name col_name,c.name type_name from sysobjects a,syscolumns b,systypes c where a.id=b.id and b.type=c.type and a.type= 'u ' and c.name= 'nchar ' --and b.length=100*2
open i
declare @tab_name varchar(50),@col_name varchar(50),@type_name varchar(50)
fetch next from i into @tab_name,@col_name,@type_name
exec( 'alter table '+@tab_name+ ' alter column [ '+@col_name+ '] nvarchar(100) ')
while (@@fetch_status=0)
begin
fetch next from i into @tab_name,@col_name,@type_name
exec( 'alter table '+@tab_name+ ' alter column [ '+@col_name+ '] nvarchar(100) ')
end
close i
deallocate i

------解决方案--------------------
建议写个sp在两个表之间copy