PRB: Running Multiple DBCC Commands Can Raise Spurious Errors (150901)



The information in this article applies to:

  • Microsoft SQL Server 4.2x
  • Microsoft SQL Server 6.0
  • Microsoft SQL Server 6.5

This article was previously published under Q150901

SYMPTOMS

When you run multiple instances of some DBCC commands at the same time, errors may be raised that turn out to be spurious.

CAUSE

There is a pre-allocated buffer workspace that many DBCC commands share rather than each allocating their own space. There are no concurrency checks for the DBCC commands to share this space, so spurious errors can arise as DBCC commands overwrite each other's workspace buffer. This is more likely to occur on SMP computers. Among those DBCC commands known to not be "multi-instance safe" are:
  • NEWALLOC
  • CHECKALLOC
  • CHECKDB
  • CHECKTABLE
  • PGLINKAGE
  • MEMUSAGE
  • TEXTALLOC
  • TEXTALL
Note that simultaneously running any combination of these commands is subject to the same problem, not just multiple instances of the same command.

WORKAROUND

Only run one DBCC command at a time to avoid spurious errors.

This problem was corrected in Microsoft SQL Server version 6.5 Service Pack 2.

Modification Type:MinorLast Reviewed:3/14/2005
Keywords:kbProgramming kbusage KB150901