同步 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相关功能同步数据(上)