SQL Server Club
Home Articles Essential Guides Blogs Links Twitter Facebook Join Contact About
SQL Server 2005 DBCC Command Reference - Part 1 of 2
Web Monkey About the Author

With security clearance and well over a decade of experience with SQL Server, Web Monkey is the resident DBA at Norb Technologies and a real database guru.

A regular contributor to SQL Server Club, his background includes software development, hardware, a smattering of essential networking knowledge and an unhealthy interest in web security. He has an obsession with automating repetitive tasks, but has a tendency to forget where he left his last open bag of fruit and nut...

Typepad Profile RSS Feed Web Monkey on Twitter
Send to a Friend Printer Friendly Version

New, Undocumented and Retired DBCC Commands in SQL Server 2005

Microsoft’s SQL Server development team has introduced seven new DBCC commands. Unfortunately little or no documentation is available on the new commands listed below, though some of them may be documented in the RTM release.

Those that are listed as being documented do not require a trace flag to be set before using them. However, to use the undocumented commands, you will need to turn on trace flag 2588. This has changed since SQL Server 7.0/2000, where the trace flag was 2520.

Please note that the following is a result of investigations with the beta 2 release of SQL Server 2005, the final RTM release may differ slightly. As always, never use an undocumented DBCC command on a production server unless advised by Microsoft, and never use a documented one unless you understand how it may affect the performance of your server.

DBCC Commands New to SQL Server 2005

Documented New Commands

  • freesessioncache () -- no parameters

  • requeststats ({clear} | {setfastdecayrate, rate} | {setslowdecayrate, rate})

Undocumented New Commands

  • mapallocunit (I8AllocUnitId | {I4part, I2part})

  • metadata ({'print' [, printopt = {0 |1}] | 'drop' | 'clone' [, '' | ....]}, {'object' [, 'type',...}, {Id | Name}, [{Ownerid | Ownername}], [{Dbid | Dbname}]])

  • optimizer_whatif property, value

  • persiststackhash (hashfile, BUFLATCH_TIMEOUT | ATTENTION | OUTOFLOCKS | LATCH_ATTN | OUTOFLOG | OUTOFMEM | SOS [, SKIPLAST | INCLUDELAST])

  • semetadata (object id | name, index id | name [, partition id])

DBCC Commands Altered Since SQL Server 2000

The following is presented as a list of pairs of commands. The first command is the old syntax, as used in SQL Server 2000. The second of each pair is the altered syntax new to SQL Server 2005. In most cases the commands have been extended to take advantage of passing an object ID instead of a name, but if your scripts use any of these commands, it's probably worth checking them out before you migrate to SQL Sever 2005.

  • 2000 : checkalloc [('database_name'[, NOINDEX | REPAIR])] [WITH NO_INFOMSGS[, ALL_ERRORMSGS][, ESTIMATEONLY]]

  • 2005 : checkalloc [('dbname'|dbid[, NOINDEX | REPAIR])] [WITH NO_INFOMSGS[,ALL_ERRORMSGS][, ESTIMATEONLY]]

  • Changes : SQL Server 2005 now accepts the dbid as well as the dbname

 

  • 2000 : checkdb [('database_name'[, NOINDEX | REPAIR])] [WITH NO_INFOMSGS[, ALL_ERRORMSGS][, PHYSICAL_ONLY] [, ESTIMATEONLY][, TABLOCK]

  • 2005 : checkdb [('dbname | dbid'[, NOINDEX | REPAIR])] [WITH NO_INFOMSGS[,ALL_ERRORMSGS][, PHYSICAL_ONLY] [, ESTIMATEONLY][, TABLOCK]]

  • Changes : SQL Server 2005 now accepts the dbid as well as the dbname

 

  • 2000 : checkident ('table_name'[, { NORESEED | {RESEED [, new_reseed_value] } } ] )

  • 2005 : checkident ('table_name'[, { NORESEED | {RESEED [, new_reseed_value] } } ] )

  • Changes : Although the syntax is identical for SQL Server 2000 and 2005, there is a subtle change in the behaviour of this command. In SQL Server 7.0 and 2000, running checkident would cause the identity column to be re-seeded, even if the table was empty. In SQL Server 2005, if the table is empty when dbcc checkident is run, the reseed value will be ignored.

 

  • 2000 : dbrepair ('dbname', DROPDB [, NOINIT])

  • 2005 : dbrepair ('dbname', markdirty | {dropdevice, int} | {repairindex, int, int})

  • Changes : dropdevice syntax changed ; markdirty and repairindex options added NB : It seems odd that this command has been extended with this release, as in the SQL Server 2005 setup help file, setupsql9.chm, it states that DROP DATABASE should be used instead of this command. It was included in SQL Server 2000 for backward compatibility only.

 

  • 2000 : indexdefrag ({dbid | dbname | 0}, {tableid | tablename}, {indid | indname})

  • 2005 : indexdefrag ({dbname | dbid | 0}, {tableid | tablename} [, {indid | indname} [, partition_number]])

  • Changes : An extra optional parameter has been added, partition_number

 

  • 2000 : inputbuffer (spid)

  • 2005 : inputbuffer (spid, [batchid])

  • Changes : An extra optional parameter has been added, batch_id

 

  • 2000 : outputbuffer (spid)

  • 2005 : outputbuffer (spid, [batchid])

  • Changes : An extra optional parameter has been added, batch_id

 

  • 2000 : proccache

  • 2005 : proccache ([compplan_ticks_threshold])

  • Changes : An optional parameter has been added, compplan_ticks_threshold

 

  • 2000 : sqlperf (LOGSPACE)({IOSTATS | LRUSTATS | NETSTATS | RASTATS [, CLEAR]} | {THREADS} | {LOGSPACE})

  • 2005 : sqlperf (LOGSPACE | IOSTATS | NETSTATS | RASTATS [, CLEAR]} | [THREADS] )

  • Changes : As for +2000, but LRUSTATS has been removed as an option. NB : Microsoft only document the LOGSPACE parameter of this command - use any others at your own discretion.

 

  • 2000 : updateusage ({'database_name'| 0} [, 'table_name' [, index_id]]) [WITH [NO_INFOMSGS] [,] COUNT_ROWS]

  • 2005 : updateusage ({'dbname' | dbid | 0} [, {'table_name' | table_id} [,{index_id | 'index_name'}]]) [WITH [NO_INFOMSGS] [,] COUNT_ROWS]

  • Changes : Can now specify db_id, table_id, or the index name as parameters, instead of just the db/table/index name. Also note that there is a problem with the output generated by the dbcc showcontig command under certain conditions in the beta version of SQL Server 2005, where more than one block of information per index is generated for tables that contain text columns.

DBCC Commands Retired Since SQL Server 2000

Many of us have used them at one time or another and a few might even depend upon them. However, we can't say we have not been warned, and Microsoft has finally retired a whole raft of dbcc commands in SQL Server 2005. Most of these were not particularly useful, but thoughtfully retained right up to SQL Server 2000 for backward compatibility with SQL Server 6.5 and earlier scripts.

The following dbcc commands are now dead and buried from SQL Server 2005 onwards:

  • adduserobject (name)

  • balancefactor (variance_percent)

  • bufcount [(number_of_buffers)]

  • cacheprofile [( {actionid} [, bucketid])

  • checkdbts (dbid, newTimestamp)]

  • des [( {'dbname' | dbid} [, {'objname' | objid} ])

  • dropuserobject ('object_name')

  • getvalue (name)

  • iotrace ( { 'dbname' | dbid | 0 | -1 }, { fileid | 0 }, bufsize, [ { numIOs | -1 } [, { timeout (sec) | -1 } [, printopt={ 0 | 1 }]]] )

  • lockobjectschema ('object_name')

  • matview ({'PERSIST' | 'ENDPERSIST' | 'FREE' | 'USE' | 'ENDUSE'})

  • memospy

  • memusage ([IDS | NAMES], [Number of rows to output])

  • monitorevents ('sink' [, 'filter-expression'])

  • newalloc (previously retired, use of checkalloc recommended instead)

  • perflog

  • pglinkage (dbid, startfile, startpg, number, printopt={0|1|2}, targetfile, targetpg, order={1|0})

  • procbuf [({'dbname' | dbid}[, {'objname' | objid}[, nbufs[, printopt = { 0 | 1 } ]]] )]

  • rebuild_log (dbname [, filename])

  • row_lock (dbid, tableid, set) - Not Needed

  • shrinkdb (previously retired, use of shrinkdatabase recommended instead)

  • tab ( dbid, objid )

  • tape_control {'query' | 'release'}[,('\\.\tape')]

  • textall [({'database_name'|database_id}[, 'FULL' | FAST] )]

  • textalloc ({'table_name'|table_id}[, 'FULL' | FAST])

  • upgradedb (db) usagegovernor (command, value)

  • wakeup (spid)

READ PART 2 - Part 2 - DBCC Commands to be Retired at a Later Date and Undocumented Commands
If you found this article useful, please visit our sponsors who keep us going...

SQL Defrag Studio 2009
Fragmented indexes can cause your SQL Server to gradually slow down until it grinds
to a complete stop. Performance may be slow but you'll need to solve it fast.

SQL Defrag Studio finds fragmented indexes and automatically defrags them for you.
Download
Send to a Friend Printer Friendly Version
Part 2 ||Top of Page
© Norb Technologies 2007-2010 Privacy Policy Norb Technologies Devdex Feedback Home
Feedback Form