SQL服务器“无法插入重复键...重复的键值是(序列键)。”

时间:2015-07-09 07:21:02

标签: sql sql-server duplicates sequence

我们每隔3-4个月就会出现一个重复键值错误,这是一个序列键。根据我们的理解,这是SQL服务器中的一个错误,平均每3-4个月发生一次。然而,本周它在两个不同的架构上发生了两次。巧合?我们可以通过手动调整序列键并以正确的数字重新开始序列来轻松解决这个问题。

但是,我希望你能专家给我一些理解

  • 这真的是一个错误吗?什么可以/导致这个问题发生?序列密钥怎么能从一天到另一天落后4个数字?
  • 有没有办法保护自己不受此事影响? Sinwe我们正在制定一个计划,加载我们所有的项目/包,我们在发生这次崩溃时会有很大的延迟。

感谢您帮助我,我试着对此进行调查,但未找到任何合理的答案。

修改序列创建

CREATE SEQUENCE [igs].[SQ_SK_ACTION] AS [bigint] 
        START WITH 180982719 
        INCREMENT BY 1 
        MINVALUE -9223372036854775808 
        MAXVALUE 9223372036854775807 
        NO CACHE 
GO

CONSTRAINT [PK_TF_ACTION] PRIMARY KEY CLUSTERED ( [SK_ACTION] ASC )
   WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
         IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
   ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [igs].[TF_ACTION] 

ADD CONSTRAINT [DF_TF_ACTION_SK_ACTION] 
   DEFAULT (NEXT VALUE FOR [igs].[SQ_SK_ACTION]) FOR [SK_ACTION] 
GO

0 个答案:

没有答案