Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将数据库中的主键从INT-identifier更改为uniqueidentifier_Sql Server - Fatal编程技术网

Sql server 如何将数据库中的主键从INT-identifier更改为uniqueidentifier

Sql server 如何将数据库中的主键从INT-identifier更改为uniqueidentifier,sql-server,Sql Server,我有一个包含许多表的数据库(SQL Server),我构建了一个需要在两个数据库之间同步数据的应用程序,我使用SynFramework,但为了避免与数据冲突,我决定将所有主键更改为uniqueidentifier。问题是我有太多的表,手动更改需要很长时间。 我提前向您表示感谢在您开始这条路之前,请阅读以下内容并权衡利弊:我已经考虑过这个问题,不会影响性能。使用GUID的目的是确保表之间的关系不会丢失完整性,以便在两个数据库之间进行数据同步,并避免这些恼人的冲突。这些列也是聚集索引吗?如果是这样,

我有一个包含许多表的数据库(SQL Server),我构建了一个需要在两个数据库之间同步数据的应用程序,我使用SynFramework,但为了避免与数据冲突,我决定将所有主键更改为uniqueidentifier。问题是我有太多的表,手动更改需要很长时间。
我提前向您表示感谢

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