3

几年前我开始从事复制工作时,我确信身份范围管理仅在最近的 SQL Server 中用于遗留用途,因为在 SQL Server 2000 之前,GUID 类型字段不存在并且大多数主键是建立在自动增量字段上。

我已经看到其中一些数据库“在工作”,我可以说在复杂的复制拓扑中管理这些身份范围可能是一个真正的 PITA,肯定会让人头疼,而且需要通宵达旦的调试会话。

我刚刚在这里读到,身份范围管理仍然被提议作为 SQL Server 2008 的默认设置,然后是关于最佳实践和身份范围管理的另一个问题,其中 #mwolfe02 得出的结论是,在某些情况下,用户无法在数据库中插入数据除非他们被授予数据库所有者的权利!

令人不安,不是吗。那么,除了遗留数据库之外,为什么有人应该将身份范围管理与 SQL Server 一起使用?以更通用的方式,为什么有人会在数据库中推广任何预定\自动增量识别方法?

4

1 回答 1

1

我想继续使用标识值的原因之一是因为在数据库中使用 GUID 作为主键的缺点,这里记录了GUIDs as PRIMARY KEYs

我个人从未使用过复杂的复制拓扑,并且在设置复制时总是使用整数。我通过调整标识函数的增量值来管理标识范围,因此如果我有两台服务器在复制中,我将在一个服务器上有奇数,在另一个服务器上有偶数并递增 2。同样的设置适用于多台服务器,增量集等于服务器的数量。

我还将从整数的最低数字(-2,147,483,648 到 2,147,483,647)开始我的身份范围,因为有很多值没有被用作整数身份列,通常不是从一个开始。即使您涉及 20 台服务器,仍然可以为您提供相当多的值可供使用。

于 2011-06-02T14:23:23.877 回答