{"id":1038,"date":"2008-07-11T00:01:00","date_gmt":"2008-07-11T00:01:00","guid":{"rendered":"\/blogs\/paul\/post\/Search-Engine-QA-20-Boot-pages-and-boot-page-corruption.aspx"},"modified":"2017-04-13T09:51:42","modified_gmt":"2017-04-13T16:51:42","slug":"search-engine-qa-20-boot-pages-and-boot-page-corruption","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/","title":{"rendered":"Search Engine Q&#038;A #20: Boot pages, and boot page corruption"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Now that I&#8217;ve done all the business-related blog posts, back to the good stuff to stop people complaining!<\/p>\n<p>Something that&#8217;s cropped up a few times over the summer so far is people trying to repair boot page corruptions.<\/p>\n<p>First off, what&#8217;s a <em>boot page<\/em>? Every database has a single page that stores critical information about the database itself. It&#8217;s always page 9 in file 1 (the first file in the PRIMARY filegroup). You can examine the page using <span style=\"font-family: 'Courier New';\">DBCC PAGE<\/span> and it will interpret all the fields for you, but there&#8217;s another command, <span style=\"font-family: 'Courier New';\">DBCC DBINFO<\/span>, that also dumps all this info (in fact the <span style=\"font-family: 'Courier New';\">DBCC PAGE<\/span> code calls the same underlying dumping code). This command is undocumented and unsupported but widely known and &#8216;documented&#8217; in lots of places on the web &#8211; given that it uses the same code as <span style=\"font-family: 'Courier New';\">DBCC PAGE<\/span>, it&#8217;s just as safe to use IMHO.<\/p>\n<p>Note that the output of DBCC DBINFO and DBCC PAGE of the boot page may change from release to release!<\/p>\n<p>So what&#8217;s on the boot page?<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px;\"><p>&nbsp;<\/p>\n<p><span style=\"font-family: 'Courier New'; font-size: small;\">DBCC<\/span><span style=\"font-family: 'Courier New';\"><span style=\"color: #000000;\"> DBINFO <\/span><span style=\"color: #808080;\">(<\/span><span style=\"color: #ff0000;\">&#8216;BootPageTest&#8217;<\/span><span style=\"color: #808080;\">);<\/p>\n<p><\/span><\/span><span style=\"font-family: 'Courier New'; font-size: small;\">GO<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: 'Courier New';\">DBINFO STRUCTURE:<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">DBINFO @0x5BF6EF84<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">dbi_dbid = 19\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_status = 65536\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_nextid = 2073058421<\/p>\n<p>dbi_dbname = BootPageTest\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_maxDbTimestamp = 2000\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_version = 611<\/p>\n<p>dbi_createVersion = 611\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_ESVersion = 0<\/p>\n<p>dbi_nextseqnum = 1900-01-01 00:00:00.000\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_crdate = 2008-07-10 15:53:18.843<\/p>\n<p>dbi_filegeneration = 0<\/p>\n<p>dbi_checkptLSN<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 41\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 29\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 55<\/p>\n<p>dbi_RebuildLogs = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_dbccFlags = 2<\/p>\n<p>dbi_dbccLastKnownGood = 1900-01-01 00:00:00.000<\/p>\n<p>dbi_dbbackupLSN<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">dbi_oldestBackupXactLSN<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/p>\n<p>dbi_LastLogBackupTime = 1900-01-01 00:00:00.000<\/p>\n<p>dbi_differentialBaseLSN<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">dbi_createIndexLSN<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">dbi_versionChangeLSN<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/p>\n<p>dbi_familyGUID = a4e88c13-b4cf-4320-834e-92b237244d4b<\/p>\n<p>dbi_recoveryForkNameStack<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">entry 0<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/p>\n<p>m_guid = a4e88c13-b4cf-4320-834e-92b237244d4b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">entry 1<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/p>\n<p>m_guid = 00000000-0000-0000-0000-000000000000<\/p>\n<p>dbi_differentialBaseGuid = 00000000-0000-0000-0000-000000000000\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_firstSysIndexes = 0001:00000014<\/p>\n<p>dbi_collation = 872468488\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_category = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_maxLogSpaceUsed = 231936<\/p>\n<p>dbi_localState = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_roleSequence = 0<\/p>\n<p>dbi_failoverLsn<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">dbi_dbmRedoLsn<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">dbi_dbmOldestXactLsn<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/p>\n<p>dbi_dbMirrorId = 00000000-0000-0000-0000-000000000000<\/p>\n<p>dbi_pageUndoLsn<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/p>\n<p>dbi_disabledSequence = 0<\/p>\n<p>dbi_dvSplitPoint<\/span><\/p>\n<p><span style=\"font-family: 'Courier New';\">m_fSeqNo = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_blockOffset = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_slotId = 0<\/p>\n<p>dbi_CloneCpuCount = 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dbi_CloneMemorySize = 0<\/p>\n<p>DBCC execution completed. If DBCC printed error messages, contact your system administrator.<\/span><\/p><\/blockquote>\n<p>There&#8217;s all kinds on interesting things in there, for instance:<\/p>\n<ul>\n<li>\n<div><span style=\"font-family: 'Courier New';\">dbi_version<\/span> and <span style=\"font-family: 'Courier New';\">dbi_createversion<\/span>: the physical version number of the database (and when it was created). See question 1 in the August 2008 SQL Q&amp;A column in TechNet Magazine for an explanation (see <a href=\"https:\/\/technet.microsoft.com\/en-us\/magazine\/2008.08.sqlqa.aspx\">here<\/a>).<\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: 'Courier New';\">dbi_RebuildLogs<\/span><span style=\"font-family: Verdana;\">: a count of the number of times the transaction log has been rebuilt for the database. PSS can use this to tell whether corruption problems could have been caused by DBAs rebuilding the log<\/span><\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: 'Courier New';\">dbi_dbccLastKnownGood<\/span><span style=\"font-family: Verdana;\">: the completion time of the last &#8216;clean&#8217; run of DBCC CHECKDB<\/span><\/div>\n<\/li>\n<li>\n<div>a bunch of different LSNs related to checkpoint, backups, database mirroring<\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: 'Courier New';\">dbi_LastLogBackupTime<\/span><span style=\"font-family: Verdana;\">: self-explanatory<\/span><\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: 'Courier New';\">dbi_differentialBaseGuid<\/span><span style=\"font-family: Verdana;\">: the GUID generated by the last full database backup. Differential backups can only be restored on top of a matching full backup &#8211; so an out-of-band full backup could screw-up your disaster recovery &#8211; see <a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/backup-with-copy_only-how-to-avoid-breaking-the-backup-chain\/\" target=\"_blank\">this blog post<\/a> for more info.<\/span><\/div>\n<\/li>\n<\/ul>\n<p>Now, what about if this page is corrupt in some way? I corrupted the <span style=\"font-family: 'Courier New';\">BootPageTest<\/span> database to have a corrupt boot page. Let&#8217;s see what happens:<\/p>\n<blockquote><p><span style=\"font-family: 'Courier New'; font-size: small;\"><span style=\"color: #0000ff;\">USE<\/span><span style=\"color: #000000;\"> BootPagetest<\/span><span style=\"color: #808080;\">;<\/p>\n<p><\/span><span style=\"color: #0000ff;\">GO<\/span> <\/span><\/p>\n<p><span style=\"color: #ff0000;\">Msg 913, Level 16, State 4, Line 1<\/p>\n<p>Could not find database ID 19. Database may not be activated yet or may be in transition. Reissue the query once the database is available. If you do not think this error is due to a database that is transitioning its state and this error continues to occur, contact your primary support provider. Please have available for review the Microsoft SQL Server error log and any additional information relevant to the circumstances when the error occurred.<\/span><\/p>\n<p>&nbsp;<\/p><\/blockquote>\n<p><span style=\"color: #000000; font-size: small;\">Okay &#8211; let&#8217;s try setting the database into <span style=\"font-family: 'Courier New';\">EMERGENCY<\/span> mode:<\/span><\/p>\n<blockquote><p>&nbsp;<\/p>\n<p><span style=\"color: #0000ff;\">ALTER DATABASE<\/span><span style=\"color: #000000;\"> BootPageTest <\/span><span style=\"color: #0000ff;\">SET EMERGENCY<\/span><span style=\"color: #808080;\">;<\/p>\n<p><\/span><span style=\"color: #0000ff;\">GO<\/span><\/p>\n<p><span style=\"color: #ff0000;\">Msg 824, Level 24, State 2, Line 1<\/p>\n<p>SQL Server detected a logical consistency-based I\/O error: incorrect checksum (expected: 0xcdee22fa; actual: 0xcb6ea2fa). It occurred during a read of page (1:9) in database ID 19 at offset 0x00000000012000 in file &#8216;C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\DATA\\BootPageTest.mdf&#8217;. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.<\/span><\/p>\n<p>&nbsp;<\/p><\/blockquote>\n<p><span style=\"color: #000000; font-family: Verdana; font-size: small;\">Hmm. What about running <span style=\"font-family: 'Courier New';\">DBCC CHECKDB<\/span>?<\/span><\/p>\n<blockquote><p>&nbsp;<\/p>\n<p><span style=\"color: #0000ff;\">DBCC CHECKDB <\/span><span style=\"color: #808080;\">(<\/span><span style=\"color: #ff0000;\">&#8216;BootPageTest&#8217;<\/span><span style=\"color: #808080;\">)<\/span> <span style=\"color: #0000ff;\">WITH NO_INFOMSGS<\/span><span style=\"color: #808080;\">,<\/span> <span style=\"color: #0000ff;\">ALL_ERRORMSGS<\/span><span style=\"color: #808080;\">;<\/p>\n<p><\/span><span style=\"color: #0000ff;\">GO<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>Msg 922, Level 14, State 1, Line 1<\/p>\n<p>Database &#8216;BootPageTest&#8217; is being recovered. Waiting until recovery is finished.<\/p>\n<p>&nbsp;<\/p><\/blockquote>\n<p><span style=\"color: #000000; font-family: Verdana;\">It&#8217;s not looking good. Obviously the change to <span style=\"font-family: 'Courier New';\">EMERGENCY<\/span> mode couldn&#8217;t complete properly. What&#8217;s the database status?<\/span><\/p>\n<blockquote><p>&nbsp;<\/p>\n<p><span style=\"color: #0000ff;\">SELECT<\/span><span style=\"color: #000000;\"> [state_desc] <\/span><span style=\"color: #0000ff;\">FROM<\/span> <span style=\"color: #008000;\">sys.databases<\/span> <span style=\"color: #0000ff;\">WHERE<\/span> <span style=\"color: #000000;\">[name] <\/span><span style=\"color: #808080;\">=<\/span> <span style=\"color: #ff0000;\">&#8216;BootPageTest&#8217;<\/span><span style=\"color: #808080;\">;<\/p>\n<p><\/span><span style=\"color: #0000ff;\">GO<\/span><\/p>\n<p><span style=\"color: #000000;\">state_desc<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>RECOVERY_PENDING<\/span><\/p>\n<p>&nbsp;<\/p><\/blockquote>\n<p><span style=\"font-size: small;\">The boot page is inaccessible so in effect the database is inaccessible too, this is what the database state means in this case.<\/span><\/p>\n<p><span style=\"font-size: small;\">So what does this mean? If the boot page is corrupt, you can&#8217;t run <span style=\"font-family: 'Courier New';\">DBCC CHECKDB<\/span> so you can&#8217;t possibly run repair, and you can&#8217;t put the database into <span style=\"font-family: 'Courier New';\">EMERGENCY<\/span> mode so you can&#8217;t extract data into a new database. <\/span><span style=\"font-size: small;\">It means that there&#8217;s NO WAY to recover from a corrupt boot page EXCEPT to restore from backups. One more reason to have backups&#8230; [Edit 2015: You can swap out the entire boot page using a hex editor with one from a restored backup.]<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Now that I&#8217;ve done all the business-related blog posts, back to the good stuff to stop people complaining! Something that&#8217;s cropped up a few times over the summer so far is people trying to repair boot page corruptions. First off, what&#8217;s a boot page? Every database has a single page that stores critical information [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30,48,62,78,100],"tags":[],"class_list":["post-1038","post","type-post","status-publish","format-standard","hentry","category-corruption","category-inside-the-storage-engine","category-on-disk-structures","category-search-engine-q-and-a","category-undocumented-commands"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Search Engine Q&amp;A #20: Boot pages, and boot page corruption - Paul S. Randal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Search Engine Q&amp;A #20: Boot pages, and boot page corruption - Paul S. Randal\" \/>\n<meta property=\"og:description\" content=\"&nbsp; Now that I&#8217;ve done all the business-related blog posts, back to the good stuff to stop people complaining! Something that&#8217;s cropped up a few times over the summer so far is people trying to repair boot page corruptions. First off, what&#8217;s a boot page? Every database has a single page that stores critical information [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/\" \/>\n<meta property=\"og:site_name\" content=\"Paul S. Randal\" \/>\n<meta property=\"article:published_time\" content=\"2008-07-11T00:01:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T16:51:42+00:00\" \/>\n<meta name=\"author\" content=\"Paul Randal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul Randal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/\",\"name\":\"Search Engine Q&A #20: Boot pages, and boot page corruption - Paul S. Randal\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\"},\"datePublished\":\"2008-07-11T00:01:00+00:00\",\"dateModified\":\"2017-04-13T16:51:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Search Engine Q&#038;A #20: Boot pages, and boot page corruption\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\",\"name\":\"Paul S. Randal\",\"description\":\"In Recovery...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\",\"name\":\"Paul Randal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"caption\":\"Paul Randal\"},\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/paul\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Search Engine Q&A #20: Boot pages, and boot page corruption - Paul S. Randal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/","og_locale":"en_US","og_type":"article","og_title":"Search Engine Q&A #20: Boot pages, and boot page corruption - Paul S. Randal","og_description":"&nbsp; Now that I&#8217;ve done all the business-related blog posts, back to the good stuff to stop people complaining! Something that&#8217;s cropped up a few times over the summer so far is people trying to repair boot page corruptions. First off, what&#8217;s a boot page? Every database has a single page that stores critical information [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/","og_site_name":"Paul S. Randal","article_published_time":"2008-07-11T00:01:00+00:00","article_modified_time":"2017-04-13T16:51:42+00:00","author":"Paul Randal","twitter_misc":{"Written by":"Paul Randal","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/","name":"Search Engine Q&A #20: Boot pages, and boot page corruption - Paul S. Randal","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website"},"datePublished":"2008-07-11T00:01:00+00:00","dateModified":"2017-04-13T16:51:42+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/search-engine-qa-20-boot-pages-and-boot-page-corruption\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/paul\/"},{"@type":"ListItem","position":2,"name":"Search Engine Q&#038;A #20: Boot pages, and boot page corruption"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/","name":"Paul S. Randal","description":"In Recovery...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce","name":"Paul Randal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","caption":"Paul Randal"},"sameAs":["http:\/\/3.209.169.194\/blogs\/paul"],"url":"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/1038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/comments?post=1038"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/1038\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/media?parent=1038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/categories?post=1038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/tags?post=1038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}