如何将复合键列类型从varchar更改为nvarchar?

时间:2011-10-04 06:48:53

标签: sql sql-server-2005 primary-key composite-key sql-scripts

我需要将所有varchar列更改为nvarchar类型。我已经在这个帖子SQL Server - script to update database columns from varchar to nvarchar if not already nvarchar的帮助下生成了一个脚本。

但是,此脚本无法更改复合主键列。我们的表中有许多复合键,因此无法手动完成。

有没有办法将varchar复合键的更改编写为nvarchar?

2 个答案:

答案 0 :(得分:2)

您的数据库是否有构建过程?你有源控制系统吗?如果您这样做,我建议您通过在源代码管理中进行搜索和替换来进行更改,重建数据库,然后使用架构比较工具(如在Visual Studio数据库项目或RedGate架构比较中)生成更改脚本。

如果您没有构建过程或源代码控制,则可以使用Management Studio编写数据库脚本(右键单击数据库,选择所有任务>生成脚本)。

答案 1 :(得分:0)

我决定手动部分地这样做。首先,我手动将所有主键从varchar更改为nvarchar(使用Management Studio)。然后我使用脚本将所有其他(非约束)列更改为nvarchar。之后,我使用find-replace更改了所有视图,存储过程和触发器。最后,我将数据库与使用Red Gate SQL Compare的生产数据库进行了比较。

我还必须将最终脚本拆分为较小的部分,因为有些表太大而无法同时重建(事务日志填满整个驱动器)。