昨天我遇到了一个不寻常的问题,我突然无法将记录插入到带有标识列的表中。
像这样的简单插入:INSERT INTO MyTable (Column1, Column2) VALUES ('text', 236764)
开始引发主键约束违规。
我在表上运行 DBCC CHECKIDENT,并意识到 SQL Server 已停止更新最后使用的值,因此在插入时它使用旧值递增,而新的标识值通常已经存在于表中,因此出现违规错误.
解决问题不是问题,我只是为表重新设置了下一个最高序列号,但我以前从未见过这种情况!
有谁知道什么可能导致 SQL Server 停止更新身份属性,以及我可以在哪里寻找证据?不涉及复制或任何触发器,它只是一个普通的旧表。
编辑:SQL Log Rescue 本来是理想的,但它只适用于 SQL Server 2000。SQL 2005 日志是否有类似的工具?