我有一张这样的表:
CREATE TABLE [dbo].[RequestQueue]
(
[QueueID] [BIGINT] IDENTITY(1,1) NOT NULL,
[EntryDate] [DATETIME] NULL
CONSTRAINT [DF_SecurityQueue_EntryDate] DEFAULT (GETDATE()),
[AsOfDate] [DATE] NULL,
[ItemID] [VARCHAR](32) NULL,
[ItemType] [VARCHAR](50) NULL,
[Message] [VARCHAR](MAX) NULL,
CONSTRAINT [PK_QueueID]
PRIMARY KEY CLUSTERED ([QueueID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
我有一个每天运行的SQL作业,将数据插入此表,insert语句如下:
INSERT INTO dbo.RequestQueue( AsOfDate , ItemID , ItemType )
VALUES ( GETDATE(),'ABC1','TYPE1' )
这项日常工作运行正常一年多,直至昨晚以下信息打破:
Ms 2627,Level 14,State 1,Line 25
违反PRIMARY KEY约束'PK_QueueID'。无法在对象'dbo.RequestQueue'中插入重复键。重复键值为(1698922)。
我检查了身份值如下:
SELECT IDENT_CURRENT('dbo.RequestQueue')
返回1698922
SELECT MAX([QueueID])
FROM [dbo].[RequestQueue]
返回1699269
什么搞砸了IDENT_CURRENT
?
SQL作业按日计划运行,每天运行一次。
RequestQueue表有一些并发读者,他们也发出更新语句,当然,从不在PK列上。
其他地方没有其他插入作业/流程。
答案 0 :(得分:0)
使用以下命令
看起来有时会对您的表进行重新编辑DBCC CHECKIDENT (YourTable, RESEED, 999)