Error 629

Severity

21

Message text

Clustered index row entry for data page %ld is missing in index page %ld of table '%S_OBJID' in database '%S_DBID'; index row contains data page %ld instead. You can recreate the clustered index to fix this error. Xactid is (%ld,%d).

Explanation

This error occurs when Adaptive Server fails to delete a clustered index entry because the index entry did not point to the expected page.

In the error message text, the first page number refers to the data page and the last page number refers to the leaf-level index page that points to the data page.

Error 629 can occur when you attempt to delete a row in a table that has a clustered index, but Adaptive Server cannot find a pointer from the leaf page of the clustered index to the data page as expected.

The error is caused by data corruption that occurred during Adaptive Server processing (for example, an operating system panic occurs, causing interruption in disk writes when using UNIX files for Sybase database devices). This may be due to a problem with the server, the operating system, or hardware.

Action

  1. Use the procedure in “Finding an object name from a page number” in the chapter “Other Useful Tasks” in the most recent version of Troubleshooting and Disaster Recovery to identify the table and index that correspond to the first page number in the error message text.

    WARNING! The procedure referenced in step 1 uses the dbcc page command. Use the dbcc page command only as directed. This command is undocumented, nonstandard, and is provided “as is” without any warranty. Sybase Technical Support does not support this command for general use. Although the command syntax is provided for reference, use this command only in the specific diagnostic situations described, and with the specific syntax shown. Failure to do so could cause performance problems and database corruption.

  2. If the object encountering the error is not a system table (a system table’s object ID is less than 100), continue with step 3.

    If the object with the error is a system table, refer to “Fixing a corrupted system table index” in the chapter “Other Useful Tasks” in the most recent version of the Troubleshooting and Disaster Recovery guide for instructions on how to repair the system table index. Then go to step 6.

  3. Determine the index name and the first page in the page chain.

    1> use <database_name> 
    2> go
    
    1> select name, first from sysindexes 
    2> where id = <object_ID> and indid = 1
    3> go
    
  4. Check that the page linkage is intact.

    1> dbcc pglinkage(<dbid>,<first page>,0,1,0,1)
    2> go
    

    If you see a message indicating “End of chain reached”, the page linkage is intact; continue with step 5. If you do not see such a message, the page linkage is bad; stop here, do not drop the clustered index, and contact Sybase Technical Support.

  5. To ensure that the information needed to re-create the index is available, run sp_helpindex on the index prior to dropping it.

    Drop the index.

    Re-create the index. This clears the corruption in most cases.

  6. Run dbcc checktable on the table to verify that the corruption is gone. If corruption still exists, call Sybase Technical Support.

Additional information

If you need to call Sybase Technical Support for assistance, have available the information listed in “Reporting errors”.

Refer to “drop index” and “create index” in the Reference Manual: Commands for information about dropping and creating indexes.

Versions in which this error is raised

All versions