Professional Documents
Culture Documents
com
Contributing Editor of TechNet Magazine and SQL Server Magazine, author of the SQL Q&A columns, bi-monthly articles on DBA topics, multiple 2008 whitepapers 5 years at DEC responsible f th VMS fil t ibl for the file-system and check/repair t d h k/ i Almost 9 years as developer/manager in the SQL Storage Engine team through August 2007, ultimately responsible for Core Storage Engine
Wrote DBCC component, other Storage Engine code, DBCC CHECKDB/repair for SQL 2005
Regular presenter at worldwide TechEds, SQL PASS and other conferences on disaster recovery, HA, maintenance, and internals Wrote and presented SQL Server 2008 training for Microsoft Course author/instructor for Microsoft Certified Master certs Co-Chair of the SQL Connections conference
Introduction
There are a *ton* of undocumented tools, ton functions, stored-procedures and trace flags in SQL Server Many of them are only there for testing or for deep debugging purposes for Product Support Many of them are dangerous Many of them are *extremely* useful for DBAs
Overview
DBCC commands Functions and SPs T Trace flags and startup options fl d t t ti
(dbname|id, objname|id, number of buffers to list, dump style, type of page) Lists the pages from the specified object that are in the buffer pool, from MRU to LRU order Can also be used WITH TABLERESULTS for later analysis (dbname, repairindex, objectid, indexid) Used to drop and recreate an index on a system table Can sometimes be used when only alternative is to extract data into a new database
DBCC DBREPAIR
(dbname|id) Dumps the boot page contents for the database Equivalent to DBCC PAGE (dbname, 1 9 3) (dbname 1, 9, (dbname|id) Dumps all in-memory metadata about a database and its files (dbname|id, (dbname|id fileid) Dumps the file header page contents for the file Equivalent to DBCC PAGE (dbname, fileid, 0, 3)
DBCC DBTABLE
DBCC FILEHEADER
(dbid) Used to only free the proc cache for a single database Very useful for performance testing on production systems (dbname|id) Used to force all ghost records in a database to be cleaned up Very useful to reclaim space without having to do index rebuilds
DBCC FORCEGHOSTCLEANUP
(dbname|id, objectname|id, indexid|1|0|-1|-2, partitionid) Used to list all pages allocated to an object Indexid -1 means everything; -2 means just IAM pages 1 2 (dbname|id, fileid, pageid, dumpstyle) Used to dump a page contents Dumpstyle 1 means record hex dump; 2 means page hex dump; 3 means crack open records p (dbname|id) Used to examine VLF structure of transaction log
DBCC PAGE
DBCC LOGINFO
Extremely useful for post-processing of results Allows consistency checking Agent j y g g jobs to easily y persist results
Demo
Undocumented DBCC commands
Functions
Lots of undocumented functions fn dblog fn_dblog
select * from fn_dblog (startLSN, endLSN) Used to dump the contents of the transaction log p g select * from fn_dblog (startLSN, endLSN, g( , , DISK|TAPE, devicenum, backuppath) Used to dump the contents of the transaction log in a backup
fn_dump_dblog
Demo
Undocumented functions
Stored Procedures
Lots of undocumented SPs and XPs sp MSforeachdb sp_MSforeachdb sp_MSforeachtable
Operate per database and table very useful Programmatically read the error log Useful for programmatically building restore paths, for instance
xp_readerrorlog
xp_regread
Inline Functions
%%lockres%%
Used to get the lock resource hash value for a row when investigating incorrect blocking/deadlocking select *, %%lockres%% from t1 select *, %%rowdump%% from t1 Used to help find record locations when dealing with corruption select *, %%physloc%% %%physloc%%, sys.fn_PhysLocFormatter(%%physloc%%) from t1
%%rowdump%%
%%physloc%%
Demo
Undocumented inline functions
Lightly documented (http://support.microsoft.com/kb/329526) Changes the number of extents allocated by roundrobin allocation during index builds or rebuilds Use for data warehouses with very large index scans Increases the size of physical IOs to get better throughput g p 2005: 4 extents per file 2008+: 64 extents per file
Changes the server collation Remaps the file paths of the model database to be the same as the master database Allows the model database to be restored if the original location of model is unavailable This then allows tempdb to be created as its created created, it s from model Must use with T3608 to allow system database restore
-Q Q
Log plan recompilations and reasons for them Disable ghost cleanup task Force page audits when pages are read from disk Protect P t t unchanged pages in th b ff pool t catch memory h d i the buffer l to t h corruptions
661
806
831
Enables large memory page support which can give a perf poost on large 64-bit systems
See http://support.microsoft.com/kb/920093 p pp
1117
Force all data files to auto-grow at the same time Disable single-page allocations in tempdb
See http://support.microsoft.com/kb/328551
1118
1211
Disable lock escalation Escalate locks only on memory pressure > 40%
1224
Turns off database mirroring compression in 2008+ Turns off tracing calls to DBCC TRACEON/TRACEOFF Turns off tracing backup completions Fake NO_LOG/TRUNCATE_ONLY operations Extra auditing of log records
2505
3226
3231
3422
Trace information about checkpoints Allow debug info to be printed to client or errorlog Allows attaching, detaching, and restoring ofsystem databases Trace user login information
3604/3605
3608
4013
Demo
Undocumented trace flags g
Review
DBCC commands Functions and SPs Trace flags and startup options All features Ive described here are *safe* I ve safe Make sure you try other undocumented stuff outr in test before using in production Have fun!