我有一个序列,可以为系统中的对象生成跟踪号。它已经运行了一段时间了。
上周,我们注意到它开始重新使用值。
似乎发生的事情是,在晚上的不同时间点,它将回滚到前一天的值。然后它将继续从该点生成值。
因此,例如,我可以得到这样的东西:
10112
10113
10114
10115
10116
10117
10118
10113
10114
10115
10116
...
何时发生,第一次使用与第二次使用之间的持续时间(少至10分钟或几小时)或回滚了多少(少至1次至数百次)似乎没有任何规律。
我曾考虑过运行跟踪(现在仍然可以),但是我认为序列对象没有被直接修改。我认为这是因为修改日期已经过了几天,并且指出了我们手动提高该值以尝试消除重复项的时间。(此后此问题已经发生过好几次了。)
是否有人知道每晚可能导致序列回滚和重用值的原因?
更新:要回答评论中的几个问题:
@@Version
:Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)2012年10月19日13:38:57
创建脚本:
CREATE SEQUENCE [schemaName].[SequenceName] AS [bigint] START WITH 410014104 INCREMENT BY 1 MINVALUE 410000000 MAXVALUE 419999999 CYCLE CACHE GO
我没有唯一约束(但我打算穿上)。但是,这只会让我知道何时重用了值。不是什么导致值重置。我的工作是每5分钟保存一个新值。时间和价值跳跃没有遵循规律。
- 我已经检查了事件日志,看是否有错误。唯一正在发生的事情是这样的:http : //support.microsoft.com/kb/2793634 我们今天正在应用此修复程序。我不认为这些是相关的,但是可能是相关的。