用update修改表中的一条纪录中了一个字段提示如下错误:
The non_clustered leaf row for page 88650 row was not found in index page 43994 indexid 7 database 'gsxt'
奇怪的是修改这条纪录的其他字段是可以的。
...全文
21912打赏收藏
Sql server 数据库修改一条纪录修改不了,急!
用update修改表中的一条纪录中了一个字段提示如下错误: The non_clustered leaf row for page 88650 row was not found in index page 43994 indexid 7 database 'gsxt' 奇怪的是修改这条纪录的其他字段是可以的。
This article was previously published under Q185964
BUG #: 17927 (SQLBUG_65)
SYMPTOMS
Using a DELETE WHERE CURRENT OF <cursor> statement can cause several server instabilities, including transient corruption. This can appear in the error log with the following error messages:
Error 605 Attempt to fetch logical page %ld in database '%.*s' belongs to object '%.*s', not to object '%.*s'.
Error 644 The non_clustered leaf row entry for page %ld row %d was not found in index page %ld indexid %d database '%.*s'
Error 624 Attempt to retrieve row from page via RID failed because the requested RID has a higher number than the last RID on the page. %S_RID.%S_PAGE.
These errors are only transient and do not appear if a database consistency check is run. In addition to the corruption, the server can stop responding (hang) and may also experience a handled access violation.
WORKAROUND
Adding an unique index to the table can greatly reduce the occurrence of this problem. You can also work around the problem by rewriting the Transact-SQL to avoid the use of a DELETE WHERE CURRENT OF <cursor> statement.