check-db在唯一索引上返回重复键错误,但select查询仅返回1个值

时间:2016-09-06 06:12:40

标签: sql-server

在得到一些不一致错误之后,我在我的数据库上做了一个check db并得到了一些独特的索引错误。试图找到重复的行,但是select查询只返回1个值。我现在完全不知道。这可能是什么问题?

  

Msg 1505,Level 16,State 1,Line 4 CREATE UNIQUE INDEX语句   终止,因为找到了对象名称的重复键   'dbo.INVENTTRANSPOSTING'和

     

索引名称'I_553DATEVOUCHERTRANSIDX'。重复的键值是   (5637144576,ers,2016年8月31日12:00 AM,SFT0017855,

     

22567183763,1)。

我用这些值查询表格,我只得到1条记录。

1 个答案:

答案 0 :(得分:0)

IDENTITY种子可能有错误的值。例如,行的主键为“1”,表上的IDENTITY SEED也为“1”,然后新行的INSERT将尝试插入相同的主键值,这是不允许的。您可以通过以下方式获得IDENTITY SEED:

SELECT TABLE_SCHEMA, TABLE_NAME, IDENT_SEED(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_SEED, IDENT_CURRENT(TABLE_SCHEMA + '.' + TABLE_NAME) AS IdentCurrent
FROM INFORMATION_SCHEMA.TABLES
WHERE IDENT_SEED(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;

然后你应该将IDENTITY SEED设置为正确的值。