Sql server 如何将数据库中的主键从INT-identifier更改为uniqueidentifier
我有一个包含许多表的数据库(SQL Server),我构建了一个需要在两个数据库之间同步数据的应用程序,我使用SynFramework,但为了避免与数据冲突,我决定将所有主键更改为uniqueidentifier。问题是我有太多的表,手动更改需要很长时间。Sql server 如何将数据库中的主键从INT-identifier更改为uniqueidentifier,sql-server,Sql Server,我有一个包含许多表的数据库(SQL Server),我构建了一个需要在两个数据库之间同步数据的应用程序,我使用SynFramework,但为了避免与数据冲突,我决定将所有主键更改为uniqueidentifier。问题是我有太多的表,手动更改需要很长时间。 我提前向您表示感谢在您开始这条路之前,请阅读以下内容并权衡利弊:我已经考虑过这个问题,不会影响性能。使用GUID的目的是确保表之间的关系不会丢失完整性,以便在两个数据库之间进行数据同步,并避免这些恼人的冲突。这些列也是聚集索引吗?如果是这样,
我提前向您表示感谢在您开始这条路之前,请阅读以下内容并权衡利弊:我已经考虑过这个问题,不会影响性能。使用GUID的目的是确保表之间的关系不会丢失完整性,以便在两个数据库之间进行数据同步,并避免这些恼人的冲突。这些列也是聚集索引吗?如果是这样,这绝对会对性能产生重大影响。这是一个挑战,当存在行时,不能将现有列从int更改为uniqueidentifier。当您更改列的数据类型时,会发生隐式转换,并且转换无法成功。您可以添加一个新列并用newid()填充它。然后删除旧列。但是你必须考虑,你必须重复这个过程并更新与当前表有关系的其他表。我想避免的是重复这个过程,因为它们有很多表,要花很长时间才能完成。你需要一种快速改变所有表的基本结构的方法。没有捷径。卷起袖子,开始工作。当您进一步遇到性能问题时,请回来查看评论。