我正在使用 SQL Server 2012,我想保留我预先存在的数据,但会导致 ID(身份)列跳过 2000 行。
为什么会这样?我有一个场景,我可能在备用服务器上发生事务,我需要将其复制到当前服务器。我希望 ID 匹配。因此,我不希望此服务器上的任何新事务与我的备用服务器具有相同的 ID。
希望这是有道理的!谢谢
我正在使用 SQL Server 2012,我想保留我预先存在的数据,但会导致 ID(身份)列跳过 2000 行。
为什么会这样?我有一个场景,我可能在备用服务器上发生事务,我需要将其复制到当前服务器。我希望 ID 匹配。因此,我不希望此服务器上的任何新事务与我的备用服务器具有相同的 ID。
希望这是有道理的!谢谢
你可以通过运行类似的东西来做到这一点
这会将您的表身份重新设置为比当前高 2000,并且似乎应该解决您想要做的事情。
要记住的一件事是,
ID
不必由IDENTITY
属性生成。使用
IDENTITY
有挑战,因为一旦行从备用服务器移动到当前服务器(IDENTITY_INSERT
当然使用),其ID
值高于当前标识值,它就会成为新的当前标识值。这会使两台服务器之间的问题复杂化。有关其他问题,请参阅:http: //msdn.microsoft.com/en-us/library/ms186775 (v=sql.110).aspx
您可能会发现带有 NOCACHE 的序列生成器或
IDs
在每台机器上生成的其他一些机制可以为您提供更多控制权。例如,您可以为每台服务器设置可以持续很长时间的 ID 范围。例如:或者您可以为这些数字添加后缀,以便所有
IDs
来自Server1的都以 1 结尾,而IDs
来自Server2的所有数字都以 2 结尾。或者任何其他可以帮助您避免或限制不断调整值或让两台机器了解彼此状态的需要的东西。