同步 SQL Server 数据库 - 到 GUID 或不到 GUID

Posted

技术标签:

【中文标题】同步 SQL Server 数据库 - 到 GUID 或不到 GUID【英文标题】:Sync SQL Server Databases - To GUID or not to GUID 【发布时间】:2015-03-24 22:33:33 【问题描述】:

我正在使用一个旧应用程序并创建一个全新的版本。我打算将 SQL Server 用于本地和远程数据库。为了让本地和远程数据库保持同步,我要写一个同步过程...

可以使用 Microsoft Sync Framework 或自定义的东西...这是以后的问题。

当前版本的数据库使用带自动增量的 int 主键值。由于 PK 重复的可能性,保持更改同步的坏消息。

为了解决这个问题,我看到了两个基本选项:

1) 根据 int ID 值 + 源创建一个新的 PK(如“local”或“remote_db_name”)

2) 将PK切换为GUID

我在这两个方面都看到了负面影响,但我更倾向于 GUID ...这意味着使用大量脚本进行痛苦的数据转换,以及可能出现的索引缓慢问题...

阅读this post 后,我想知道我是否应该做某种组合,比如使用 GUID 进行同步,但使用“组合键”进行其他所有操作?不过这可能是一种浪费......

我是否缺少替代方法?

谢谢!

【问题讨论】:

关于这个问题的另一篇好文章:blogs.msdn.com/b/sqlserverfaq/archive/2010/05/27/… 【参考方案1】:

对于一个快速而肮脏的解决方案,您可以将 Auto-Increment Seed 设置为一个较大的数字,这样新系统将在不会与旧系统冲突的范围内创建其 ID。

以下脚本会将自增种子更改为 100 万:

DBCC CHECKIDENT ('NewTable', RESEED, 1000000)

【讨论】:

这对我来说可能是“肮脏的”。我有多个“客户端”数据库的可能性,所以我认为这行不通。

以上是关于同步 SQL Server 数据库 - 到 GUID 或不到 GUID的主要内容,如果未能解决你的问题,请参考以下文章

SQL数据同步到ELK- 利用SQL SERVER Track Data相关功能同步数据(上)

从Oracle到SQL Server和从SQL Server到Oracle的迁移指南

小项目SQL server数据实时同步到mysql

SQL Server 事务复制分发到订阅同步慢

MySQL 到 SQL Server 实时数据同步实操分享

MySQL 到 SQL Server 实时数据同步实操分享