Could not retrieve row from page by RID because the requested RID has a higher number than the last RID on the page. %S_RID.%S_PAGE, Dbid %d
This error occurs when an attempt to retrieve a row from a data page by specifying the row ID (RID) failed because the requested RID was a higher number than the last RID on the page. This can happen during normal processing, if the leaf page of a corrupt nonclustered index points to an incorrect or nonexistent RID on a data page.
If the error occurs on a system table during a read-only operation while other users are updating system tables (executing DDL), it is probably a transient 624 error (rather than a corrupted index). To confirm that there is no corruption, execute DBCC CHECKTABLE without a repair clause.
The recovery procedure depends on when the error occurred. If problems persist, the following procedures might not be sufficient to clean up the index corruption. In this case, contact your primary support provider. Have the output from either DBCC CHECKTABLE (if investigating possible system table corruption) or DBCC CHECKDB available for review.
Execute DBCC CHECKTABLE with the REPAIR_REBUILD clause. If executing DBCC CHECKTABLE with the REPAIR_REBUILD clause does not correct the problem, drop and re-create the affected index or indexes.
Important If executing DBCC CHECKDB with the REPAIR_REBUILD clause does not correct the index problem or if you are unsure what effect DBCC CHECKDB with the REPAIR_REBUILD clause has on your data, contact your primary support provider.
The fastest way to resolve this problem is to execute DBCC CHECKDB with the REPAIR_REBUILD clause. This fixes any index corruption in the entire database. If the database is so large that you do not want to run DBCC CHECKDB, use these instructions to locate the specific index to drop and re-create.
If you do not know which index is causing the problem but you do know which query encounters the problem, follow the instructions below. If you do not know the index or the query, follow the instructions under the next section, “Index and query both unknown.”
For example:
USE pubs
GO
SET SHOWPLAN_TEXT ON
GO
SET NOEXEC ON
GO
SELECT title
FROM titles
WHERE title > 'Cooking'
GO
Here is the result set:
StmtText
----------------
SET NOEXEC ON
(1 row(s) affected)
StmtText
-------------------------------------------------------
SELECT title
FROM titles
WHERE title > 'Cooking'
(1 row(s) affected)
StmtText
---------------------------------------------------------------------
|--Index Seek(pubs..titles.titleind, SEEK:(titles.title > @1) ORDERED)
(1 row(s) affected)
SET NOEXEC OFF
GO
SET SHOWPLAN_TEXT OFF
GO
If you do not know the index or the query, rebuild all nonclustered indexes on the table as follows:
DBCC CHECKDB | Resetting the Suspect Status |
DBCC CHECKTABLE | SET NOEXEC |
Errors 1 - 999 | SET SHOWPLAN_TEXT |
Reporting Errors to Your Primary Support Provider | sp_helpindex |