FIX: DBCC CHECKDB May Produce an Access Violation When Database Is in Use (293292)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q293292
BUG #: 351941 (SHILOH_BUGS)

SYMPTOMS

The DBCC CHECKDB command may produce an access violation (AV) when run on a database while other users are actively accessing the database.

RESOLUTION

To resolve this problem, obtain the latest service pack for SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack

WORKAROUND

Run DBCC CHECKDB in single user mode or during a time of reduced work load.

STATUS

Microsoft has confirmed that this is a problem in SQL Server 2000. This problem was first corrected in SQL Server 2000 Service Pack 1.

MORE INFORMATION

The access violation causes the connection from which DBCC CHECKDB is run to be broken, but no harm is done to the database. The command may be safely restarted, preferably at a time of reduced work load.

The following stack trace may be found in the errorlog:
2001-01-16 13:47:54.86 spid59    SqlDumpExceptionHandler: Process 2624 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
*******************************************************************************
*
* BEGIN STACK DUMP:
*   01/16/01 13:47:54 spid 59
*
*   Exception Address = 008DBAD2 (CheckTables::PageUpdate(class CheckRecInfo &,unsigned char,unsigned char) + 00000092 Line 0+00000000)
*   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
*   Access Violation occurred reading address 00000012
* Input Buffer 50 bytes -
*  dbcc checkdb([MSSales])  
*  

Short Stack Dump
008DBAD2 Module(sqlservr+004DBAD2) (CheckTables::PageUpdate(class CheckRecInfo &,unsigned char,unsigned char)+00000092)
008E88B9 Module(sqlservr+004E88B9) (CheckTables::ProcessLogModifyRow(class PageLog const *,class CheckRecInfo &,unsigned char,enum LOGR_UNDO_FLAG)+00000208)
008C91D1 Module(sqlservr+004C91D1) (CheckAggregate::ProcessLog(class LogRec const *,class CheckRecInfo &,enum LOGR_UNDO_FLAG)+000000B6)
008C938E Module(sqlservr+004C938E) (CheckAggregate::ProcessLogRecord(class LogRec const *,class LSN const &,enum LOGR_UNDO_FLAG)+0000009E)
008DB1F3 Module(sqlservr+004DB1F3) (CheckLogReader::ReadLog(int (__cdecl*)(class LogRec const *,class LSN const &,enum LOGR_UNDO_FLAG),class CAutoLatch &)+00000303)
008DB495 Module(sqlservr+004DB495) (CheckLogReader::ScanLog(int (__cdecl*)(class LogRec const *,class LSN const &,enum LOGR_UNDO_FLAG))+000000D6)
008C8EA1 Module(sqlservr+004C8EA1) (CheckAggregate::GetNextFact(void)+000000F2)
008EB20E Module(sqlservr+004EB20E) (CTRowsetInstance::FGetNextRow(void)+00000216)
0091FD06 Module(sqlservr+0051FD06) (CUtRowset::GetNextRows(unsigned long,long,long,unsigned long *,unsigned long * *)+00000050)
0070FAA3 Module(sqlservr+0030FAA3) (CQScanRmtScan::GetRow(unsigned long *,unsigned long *)+00000155)
00719763 Module(sqlservr+00319763) (CQScanXProducer::Open(unsigned long *)+0000039B)
007191AA Module(sqlservr+003191AA) (FnProducerThread(void *)+0000022C)
004DF8D2 Module(sqlservr+000DF8D2) (subproc_main(void *)+000000E3)
410735D0 Module(UMS+000035D0) (ProcessWorkRequests(class UmsWorkQueue *)+00000264)
4107382C Module(UMS+0000382C) (ThreadStartRoutine(void *)+000000BC)
7800BEA1 Module(MSVCRT+0000BEA1) (_beginthread+0000008B)
77E837CD Module(KERNEL32+000037CD) (_BaseThreadStart@8+00000052)
-------------------------------------------------------------------------------
Dump thread - spid = 59, PSS = 0x4a569228, EC = 0x4a569538
Stack Dump being sent to d:\MSSQL\log\SQL00164.dmp
				

Modification Type:MajorLast Reviewed:11/6/2003
Keywords:kbBug kbfix kbSQLServ2000sp1fix KB293292