1

现在我有一个 PK 所在的数据库int IDENTITY。去年,我最近的任务是将这些添加到复制拓扑中。除了 IDENTITY 字段之外,这已经很好地解决了。

我想探索使用uniqeidentifier(GUID) 更改或替换它们的选项。
插入新的PK列是否可行?
我会更好地将其增加到 abig int吗?

还有什么我应该考虑的吗?


详细说明我为什么要这样做:

据我了解,当复制遇到 IDENTITY 列时,它会为每个订阅者预留一个身份范围,例如 1-1000(默认),以确保该列的唯一 INT。您拥有的订阅者越多,它可能会成为更大的问题。这导致了我们不断收到的身份范围检查约束错误。

谢谢

4

1 回答 1

1

如果您真的必须删除该INT IDENTITY列,那么您必须执行以下步骤(或多或少):

  • 在表中创建新的 GUID 列并用值填充它
  • 识别所有引用该表的外键关系并记录这些关系(例如将它们的 CREATE 脚本存储在磁盘上或其他东西上)
  • 向所有引用表添加一个新的 GUID 引用字段
  • 根据您已有的 INT 参考字段填充这些值
  • 删除所有对您的表的 FK 引用
  • 将 INT IDENTITY PK 放在您的桌子上
  • 使新的 GUID 列成为您的 PK
  • 从所有引用表中删除旧的 INT 引用列
  • 使用新的 GUID 引用列重新创建所有外键引用

我希望这能解决问题。

于 2010-10-21T17:14:19.113 回答