我需要将所有 varchar 列更改为 nvarchar 类型。我已经在此线程SQL Server 的帮助下生成了一个脚本 - 如果还没有 nvarchar ,则该脚本将数据库列从 varchar 更新为 nvarchar。
但是,此脚本无法更改复合主键列。我们的表中有许多复合键,因此无法手动完成。
有没有办法编写从 varchar 复合键到 nvarchar 的更改?
我需要将所有 varchar 列更改为 nvarchar 类型。我已经在此线程SQL Server 的帮助下生成了一个脚本 - 如果还没有 nvarchar ,则该脚本将数据库列从 varchar 更新为 nvarchar。
但是,此脚本无法更改复合主键列。我们的表中有许多复合键,因此无法手动完成。
有没有办法编写从 varchar 复合键到 nvarchar 的更改?
Do you have a build process for your databases? Do you have a Source Control system? If you do then I would suggest you make the changes by search and replace in source control, rebuild the database and then use a schema comparison tool (as in Visual Studio Database Projects or RedGate Schema Compare) to generate a change script.
If you don't have a build process or source control then you can script your database using Management Studio (right-click the database, select All Tasks > Generate Scripts).
我决定部分手动执行此操作。首先,我手动将所有主键从 varchar 更改为 nvarchar(使用 Management Studio)。然后我使用脚本将所有其他(非约束)列更改为 nvarchar。之后,我使用 find-replace 更改了所有视图、存储的过程和触发器。最后,我使用 Red Gate SQL Compare 将数据库与生产数据库进行了比较。
我还不得不将最终脚本拆分为更小的部分,因为某些表太大而无法同时重建(事务日志填满了整个驱动器)。