首页 > 解决方案 > SELECT MAX(), COUNT() 返回错误值

问题描述

我这里有一个奇怪的问题。突然,我的一张表停止为非常简单的查询提供正确的结果。我的应用程序执行以下操作:

nextNumber = SELECT(max) numero from table + 1;

当 numero 达到 12,000 时,它只是开始返回 11995 作为从表中选择 MAX(numero) 的答案。numero 是一个 INTEGER 列,没有检查、索引,什么都没有,是一个标准的 int 列。

非常简单的查询的结果

请注意,该应用程序继续工作,并添加了 36 行新行,所有这些行的 numero = 11996(11995 从 SELECT MAX(numero) + 1 返回)

通过始终将 11995 作为结果返回给 SELECT MAX,新行对 id 25672 之后插入的新行使用相同的值

我做了很多研究,尝试删除数据库日志、事务日志、收缩数据库,但到目前为止没有任何效果。什么可能导致这样的事情?

标签: sqlsql-servertsql

解决方案


经过大量测试后,我发现问题是数据库数据文件损坏,只有运行带有 REPAIR_ALLOW_DATA_LOSS 参数的 DBCC CHECKDB 才能将有问题的表恢复为“正常”。


推荐阅读