Article ID: 298806 - View products that this article applies to.
This article was previously published under Q298806
This article has been archived. It is offered "as is" and will no longer be updated.
If you run a DBCC CHECKDB statement on a database that was upgraded from SQL Server 7.0 to SQL Server 2000, the following error message may occur:
Server: Msg 8951, Level 16, State 1, Line 1
Table error: Table '<TABLENAME>' (ID <OBJECTID>). Missing or invalid key in index '<INDEXNAME>' (ID <INDEXID>) for the row:
Server: Msg 8955, Level 16, State 1, Line 1 Data row (1:133:42) identified by (RID = (1:133:42) ) has index values (<INDEXNAME> = 0).
Server: Msg 8952, Level 16, State 1,
Line 1 Table error: Database '<DBNAME>', index '<TABLENAME>.<INDEXNAME>' (ID <OBJECTID>) (index ID <INDEXID>). Extra or invalid key for the keys:
Server: Msg 8956, Level 16, State 1, Line 1
Index row (1:137:0) with values (<INDEXNAME> = 0) points to the data row identified by (RID = (1:133:42)).
The sysindexes.status field should have a value of 2097152 so that the nonclustered index column can allow the insertion of NULL values for both SQL Server 7.0 and SQL Server 2000.
In SQL Server 7.0, if the sysindexes.status value is 0 for the nonclustered index in a table, the nonclustered index also allows the insertion of NULL values. If you run a DBCC CHECKDB statement on the SQL Server 7.0 database, the problem is not reported. After you upgrade the table in SQL Server 2000, the DBCC CHECKDB statement reports the error message described in the "Symptoms" section because a NULL value is not allowed when the sysindexes.status value is not 2097152.
To work around this problem, use any one of the following three methods:
This problem does not cause any data or index corruption. The problem is in the metadata which is corrected only by dropping and re-creating the indexes.