{"id":1046,"date":"2008-06-12T01:42:00","date_gmt":"2008-06-12T01:42:00","guid":{"rendered":"\/blogs\/paul\/post\/TechEd-Demo-Using-the-SQL-2005-Dedicated-Admin-Connection-to-fix-Msg-8992-corrupt-system-tables.aspx"},"modified":"2017-04-13T09:52:01","modified_gmt":"2017-04-13T16:52:01","slug":"using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/","title":{"rendered":"Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables"},"content":{"rendered":"<p><font face=\"Verdana\" size=\"2\" color=\"#000000\"><\/p>\n<p>\nToday I presented my brand new session&nbsp;<em>Surviving Corruption: From Detection to Recovery<\/em> at TechEd. I had a lot of fun putting together the demos, presenting the session, and talking to people afterwards. During the session, I promised to blog each of the demos so that everyone can run through them &#8211; here&#39;s the first one.\n<\/p>\n<p>\nOn SQL 2000, it was pretty easy to get into the system tables and manually change them &#8211; all you had to do was:\n<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\">\n<p>\n\t<font face=\"Courier New\"><font color=\"#0000ff\">EXEC <\/font><font color=\"#800000\">sp_configure <\/font><font color=\"#ff0000\">&#39;allow updates&#39;<\/font><font color=\"#808080\">,<\/font><font color=\"#000000\"> 1<\/font><font color=\"#808080\">;<br \/>\n\t<\/font>GO<br \/>\n\t<font color=\"#0000ff\">RECONFIGURE <\/font><font color=\"#0000ff\">WITH <\/font><font color=\"#0000ff\">OVERRIDE<\/font><font color=\"#808080\">;<br \/>\n\t<\/font>GO<\/font>\n\t<\/p>\n<\/blockquote>\n<p>\nAnd then you could insert, update, and delete whatever you wanted in the all the system tables, including the critical three &#8211; sysindexes, sysobjects, and syscolumns. The problem was that sometimes people actually did this and messed things up &#8211; for instance, by manually deleting an object from sysobjects, but leaving around all the other info about the object &#8211; such as indexes and columns. <font face=\"Courier New\">DBCC CHECKCATALOG<\/font> in SQL 2000 would find this, but <font face=\"Courier New\">DBCC CHECKDB<\/font> would not &#8211; as it didn&#39;t run the <font face=\"Courier New\">DBCC CHECKCATALOG<\/font> code &#8211; any most people do not run <font face=\"Courier New\">DBCC CHECKCATALOG<\/font> at all. Many times now, I&#39;ve seen databases upgraded to 2005 and suddenly <font face=\"Courier New\">DBCC CHECKDB<\/font> is reporting metadata corruption errors &#8211; all because someone had manually changed the system tables on 2000, and I changed <font face=\"Courier New\">DBCC CHECKDB<\/font> in 2005 to <em>include<\/em> the <font face=\"Courier New\">DBCC CHECKCATALOG<\/font> checks.\n<\/p>\n<p>\nThis demo is all about that. I created a 2000 database, manually deleted a row in sysobjects and then upgraded the database to 2005. The corrupt database is available in a zip file &#8211; <a href=\"http:\/\/www.SQLskills.com\/blogs\/paul\/content\/binary\/democorruptmetadata.zip\">DemoCorruptMetadata.zip<\/a>. If you unzip it into a folder C:\\SQLskills then you can attach it using:\n<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\"><p>\n\t<font color=\"#0000ff\"><font face=\"Courier New\"><font color=\"#0000ff\">RESTORE DATABASE<\/font><font color=\"#000000\"> DemoCorruptMetadata <\/font><font color=\"#0000ff\">FROM DISK <\/font><font color=\"#808080\">= <\/font><font color=\"#ff0000\">&#39;C:\\SQLskills\\DemoCorruptMetadata.bak&#39;<br \/>\n\t&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">WITH MOVE <\/font><font color=\"#ff0000\">&#39;DemoCorruptMetadata&#39; <\/font><font color=\"#0000ff\">TO <\/font><font color=\"#ff0000\">&#39;C:\\SQLskills\\DemoCorruptMetadata.mdf&#39;<\/font><font color=\"#808080\">,<br \/>\n\t&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">MOVE <\/font><font color=\"#ff0000\">&#39;DemoCorruptMetadata_log&#39; <\/font><font color=\"#0000ff\">TO <\/font><font color=\"#ff0000\">&#39;C:\\SQLskills\\DemoCorruptMetadata_log.ldf&#39;<\/font><font color=\"#808080\">,<br \/>\n\t&nbsp;&nbsp;&nbsp;<\/font><font color=\"#ff00ff\">REPLACE<\/font><font color=\"#808080\">;<br \/>\n\t<\/font><font color=\"#000000\">GO<\/font><\/font><font face=\"Courier New\"><\/p>\n<p dir=\"ltr\">\n\t<font face=\"Verdana\" color=\"#000000\">So what does the corruption look like on 2005?<\/font>\n\t<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\"><p>\n\t\t<font face=\"Courier New\"><\/p>\n<p>\n\t\t<font color=\"#0000ff\">DBCC CHECKDB <\/font><font color=\"#808080\">(<\/font><font color=\"#000000\">DemoCorruptMetadata<\/font><font color=\"#808080\">) <\/font><font color=\"#0000ff\">WITH NO_INFOMSGS<\/font><font color=\"#808080\">,<\/font> <font color=\"#0000ff\">ALL_ERRORMSGS<\/font><font color=\"#808080\">;<br \/>\n\t\t<\/font><font color=\"#000000\">GO<\/font> <br \/>\n\t\t<font color=\"#ff0000\">Msg 8992, Level 16, State 1, Line 1<br \/>\n\t\tCheck Catalog Msg 3853, State 1: Attribute (object_id=1977058079) of row (object_id=1977058079,column_id=1) in sys.columns does not have a matching row (object_id=1977058079) in sys.objects.<br \/>\n\t\tMsg 8992, Level 16, State 1, Line 1<br \/>\n\t\tCheck Catalog Msg 3853, State 1: Attribute (object_id=1977058079) of row (object_id=1977058079,column_id=2) in sys.columns does not have a matching row (object_id=1977058079) in sys.objects.<br \/>\n\t\t<\/font><font color=\"#000000\">CHECKDB found 0 allocation errors and 2 consistency errors not associated with any single object.<br \/>\n\t\tCHECKDB found 0 allocation errors and 2 consistency errors in database &#39;DemoCorruptMetadata&#39;.<\/font>\n\t\t<\/p>\n<p>\t\t<\/font>\n\t<\/p><\/blockquote>\n<p dir=\"ltr\">\n\t<font face=\"Verdana\" color=\"#000000\">This is what we expect. Notice that there&#39;s no recommended repair level at the end of the output &#8211; this is because CHECKDB can&#39;t repair metadata corruptions. We can&#39;t fix this with a backup &#8211; unless we have a backup from 2000 from before the manual delete in the system tables. To fix this we&#39;d need to go back to 2000, fix the corruption, and then upgrade again &#8211; usually not feasible.<\/font>\n\t<\/p>\n<p dir=\"ltr\">\n\t<font face=\"Verdana\" color=\"#000000\">Instead, we&#39;re going to fix it by manually altering the system tables in 2005 &#8211; something that&#39;s purportedly not possible. First let&#39;s see what tables there are that could include column information (remembering that the system catalogs were completely rewritten between 2000 and 2005):<\/font>\n\t<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\"><p>\n\t\t<font color=\"#0000ff\"><\/p>\n<p>\n\t\tSELECT <font color=\"#000000\">[name] <\/font><font color=\"#0000ff\">FROM<\/font><font color=\"#000000\"> DemoCorruptMetadata<\/font><font color=\"#808080\">.<\/font><font color=\"#008000\">sys.objects <\/font><font color=\"#0000ff\">WHERE <\/font><font color=\"#000000\">[name] <\/font><font color=\"#808080\">LIKE <\/font><font color=\"#ff0000\">&#39;%col%&#39;<\/font><font color=\"#808080\">;<br \/>\n\t\t<\/font><font color=\"#000000\">GO<\/font>\n\t\t<\/p>\n<p>\t\t<\/font><\/p>\n<p>\n\t\t<font color=\"#000000\">name<br \/>\n\t\t&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\t\tsysrowsetcolumns<br \/>\n\t\tsyshobtcolumns<br \/>\n\t\tsyscolpars<br \/>\n\t\tsysiscols<\/font>\n\t\t<\/p>\n<\/blockquote>\n<p dir=\"ltr\">\n\t<font face=\"Verdana\" color=\"#000000\">I know that sysrowsetcolumns and syshobtcolumns are involved at low-levels of the Storage Engine and don&#39;t contain relational metadata, so let&#39;s try <font face=\"Courier New\">syscolpars<\/font>. I want to see what columns there are to see if one of the looks like an object ID, and another looks like a column ID. This query will just return the table columns, with no rows (because the condition 1=0 is always false:<\/font>\n\t<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\"><p>\n\t\t<font size=\"5\" color=\"#0000ff\"><\/p>\n<p>\n\t\t<font size=\"2\">SELECT<\/font><font color=\"#000000\"> <\/font><font color=\"#808080\">*<\/font><font color=\"#000000\"> <\/font><font color=\"#0000ff\">FROM<\/font><font color=\"#000000\"> DemoCorruptMetadata<\/font><font color=\"#808080\">.<\/font><font color=\"#000000\">sys.syscolpars <\/font><font color=\"#0000ff\">WHERE<\/font><font color=\"#000000\"> 1 <\/font><font color=\"#808080\">=<\/font><font color=\"#000000\"> 0<\/font><font color=\"#808080\">;<br \/>\n\t\t<\/font><font size=\"2\"><font color=\"#000000\">GO<\/font><\/font>\n\t\t<\/p>\n<p>\t\t<\/font><font size=\"2\"><font size=\"4\"><\/p>\n<p>\n\t\t<font size=\"2\" color=\"#ff0000\">Msg 208, Level 16, State 1, Line 1<br \/>\n\t\t<\/font><font size=\"2\" color=\"#ff0000\">Invalid object name &#39;DemoCorruptMetadata.sys.syscolpars&#39;.<\/font>\n\t\t<\/p>\n<p>\t\t<\/font><\/font>\n\t<\/p><\/blockquote>\n<p dir=\"ltr\">\n\t<font face=\"Verdana\" color=\"#000000\">I can&#39;t bind to internal system tables in 2005. But &#8211; I can bind to internal system tables using the Dedicated Admind Connection (or DAC for short). This is documented in Books Online at <a href=\"https:\/\/msdn.microsoft.com\/Areas\/Epx\/Content\/500.htm?aspxerrorpath=\/en-us\/library\/ms179503.aspx\">http:\/\/msdn.microsoft.com\/en-us\/library\/ms179503.aspx<\/a>. You can get to the DAC through SQLCMD using the \/A switch. So &#8211; assuming I&#39;m now connected through the DAC, I&#39;ll try that command again:<\/font>\n\t<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\">\n<p dir=\"ltr\">\n\t\t<font color=\"#000000\">C:\\Documents and Settings\\paul&gt;sqlcmd \/A<br \/>\n\t\t1&gt; USE DemoCorruptMetadata;<br \/>\n\t\t2&gt; GO<br \/>\n\t\tChanged database context to &#39;DemoCorruptMetadata&#39;.<br \/>\n\t\t1&gt; SELECT * FROM sys.syscolpars WHERE 1=0;<br \/>\n\t\t2&gt; GO<br \/>\n\t\tid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number colid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name<\/font>\n\t\t<\/p>\n<p dir=\"ltr\">\n\t\t<font color=\"#000000\">xtype utype&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length prec scale collationid status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxinrow xmlns<br \/>\n\t\t&nbsp;dflt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; idtval<\/font>\n\t\t<\/p>\n<p dir=\"ltr\">\n\t\t<font color=\"#000000\">&#8212;&#8212;&#8212;&#8211; &#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n\t\t&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n\t\t&#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212; &#8212;- &#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211;<br \/>\n\t\t&nbsp;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n\t\t&#8212;&#8212;&#8212;&#8211;<\/font>\n\t\t<\/p>\n<p dir=\"ltr\">\n\t\t<font color=\"#000000\">(0 rows affected)<br \/>\n\t\t<\/font><font color=\"#000000\">1&gt;<\/font>\n\t\t<\/p>\n<\/blockquote>\n<p dir=\"ltr\">\n\t<font face=\"Verdana\" color=\"#000000\">This looks like the table. Now I&#39;ll query against it using the object ID from the original corruption message:<\/font>\n\t<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\">\n<p dir=\"ltr\">\n\t\t<font color=\"#000000\">1&gt; SELECT colid, name FROM sys.syscolpars WHERE id = 1977058079;<br \/>\n\t\t2&gt; GO<br \/>\n\t\tcolid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name<br \/>\n\t\t<\/font><font color=\"#000000\">&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\t\t&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\t\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 SalesID<br \/>\n\t\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#000000\">2 CustomerID<\/font><font color=\"#000000\"><br \/>\n\t\t(2 rows affected)<br \/>\n\t\t1&gt;<\/font>\n\t\t<\/p>\n<\/blockquote>\n<p dir=\"ltr\">\n\t<font face=\"Verdana\" color=\"#000000\">Cool. So I&#39;ll try deleting the orphaned columns:<\/font>\n\t<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\">\n<p dir=\"ltr\">\n\t\t<font color=\"#000000\">1&gt; DELETE FROM sys.syscolpars WHERE id = 1977058079;<br \/>\n\t\t2&gt; GO<br \/>\n\t\tMsg 259, Level 16, State 1, Server ROADRUNNERPR, Line 1<br \/>\n\t\tAd hoc updates to system catalogs are not allowed.<br \/>\n\t\t1&gt;<\/font>\n\t\t<\/p>\n<\/blockquote>\n<p dir=\"ltr\">\n\t<font face=\"Verdana\" color=\"#000000\">Hmm. And it doesn&#39;t help if I set &#39;allow updates&#39; to 1, or try putting the database into single-user mode.<\/font>\n\t<\/p>\n<p dir=\"ltr\">\n\t<font color=\"#000000\"><font face=\"Verdana\">There IS a way though. You can put the SERVER into single-user mode, then connect with the DAC and you can then update the system tables. This particular twist on <font color=\"#000000\">using the DAC isn&#39;t documented anywhere except in an MSDN forum thread answered by someone from Microsoft (see <\/font><\/font><a href=\"https:\/\/social.msdn.microsoft.com:443\/forums\/en-US\/sqlsecurity\/thread\/b533994a-f343-46bb-a29e-0c3663138397\/\"><font face=\"Verdana\" color=\"#000000\">here<\/font><\/a><font face=\"Verdana\" color=\"#000000\">).<\/font><\/font>\n\t<\/p>\n<p dir=\"ltr\">\n\t<font color=\"#000000\"><font face=\"Verdana\" color=\"#000000\"><strong><u><em><font color=\"#ff0000\">BEWARE<\/font><\/em><\/u><\/strong> (if I could put little flashing lights around this too then I would&#8230;) that this is undocumented and unsupported &#8211; misuse will lead to unrepairable corruption of your databases.<\/font><\/font>\n\t<\/p>\n<p>\t<font face=\"Verdana\" size=\"2\" color=\"#000000\">The sequence of events to follow is:<\/font><font face=\"Verdana\" size=\"2\" color=\"#000000\"> <\/p>\n<ul>\n<li>make a backup of the database just in case something goes wrong <\/li>\n<li>shutdown the server <\/li>\n<li>go to the binaries directory (e.g. C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Binn) and start the server in single-user mode using &#39;sqlservr -m&#39; <\/li>\n<li>connect back in using SQLCMD \/A, and run the deleta again. This time it will work, but will give an error about metadata cache consistency:<\/li>\n<\/ul>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px\">\n<p>\n\t\t<font face=\"Courier New\">C:\\Documents and Settings\\paul&gt;sqlcmd \/A<br \/>\n\t\t1&gt; USE DemoCorruptMetadata;<br \/>\n\t\t2&gt; GO<br \/>\n\t\tChanged database context to &#39;DemoCorruptMetadata&#39;.<br \/>\n\t\t1&gt; DELETE FROM sys.syscolpars WHERE id = 1977058079;<br \/>\n\t\t2&gt; GO<\/font>\n\t\t<\/p>\n<p>\n\t\t<font face=\"Courier New\">(2 rows affected)<br \/>\n\t\tWarning: System table ID 41 has been updated directly in database ID 12 and cache coherence may not have been maintained. SQL Server should be restarted.<br \/>\n\t\t1&gt;<\/font>\n\t\t<\/p>\n<\/blockquote>\n<ul>\n<li>The system table has been updated, but the in-memory cache of metadata is now out-of-sync with the system tables. So, shutdown the server again as the message suggests and restart it normally <\/li>\n<li>run CHECKDB again and you&#39;ll see the corruption has been fixed.<\/li>\n<\/ul>\n<p>\n\t&nbsp;\n\t<\/p>\n<p>\n\tHope this helps some of you.&nbsp;Watch this space for the next demo from TechEd&nbsp;of repairing corruption when no backup is available.\n\t<\/p>\n<p>\t<\/font><\/font><\/font>\n<\/p><\/blockquote>\n<p><\/font><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I presented my brand new session&nbsp;Surviving Corruption: From Detection to Recovery at TechEd. I had a lot of fun putting together the demos, presenting the session, and talking to people afterwards. During the session, I promised to blog each of the demos so that everyone can run through them &#8211; here&#39;s the first one. [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,27,30,34,35,38,74],"tags":[],"class_list":["post-1046","post","type-post","status-publish","format-standard","hentry","category-checkdb-from-every-angle","category-conferences","category-corruption","category-dbcc","category-disaster-recovery","category-example-scripts","category-repair"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables - 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\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables - Paul S. Randal\" \/>\n<meta property=\"og:description\" content=\"Today I presented my brand new session&nbsp;Surviving Corruption: From Detection to Recovery at TechEd. I had a lot of fun putting together the demos, presenting the session, and talking to people afterwards. During the session, I promised to blog each of the demos so that everyone can run through them &#8211; here&#039;s the first one. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/\" \/>\n<meta property=\"og:site_name\" content=\"Paul S. Randal\" \/>\n<meta property=\"article:published_time\" content=\"2008-06-12T01:42:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T16:52:01+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=\"6 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\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/\",\"name\":\"Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables - Paul S. Randal\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\"},\"datePublished\":\"2008-06-12T01:42:00+00:00\",\"dateModified\":\"2017-04-13T16:52:01+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables\"}]},{\"@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":"Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables - 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\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/","og_locale":"en_US","og_type":"article","og_title":"Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables - Paul S. Randal","og_description":"Today I presented my brand new session&nbsp;Surviving Corruption: From Detection to Recovery at TechEd. I had a lot of fun putting together the demos, presenting the session, and talking to people afterwards. During the session, I promised to blog each of the demos so that everyone can run through them &#8211; here&#39;s the first one. [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/","og_site_name":"Paul S. Randal","article_published_time":"2008-06-12T01:42:00+00:00","article_modified_time":"2017-04-13T16:52:01+00:00","author":"Paul Randal","twitter_misc":{"Written by":"Paul Randal","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/","name":"Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables - Paul S. Randal","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website"},"datePublished":"2008-06-12T01:42:00+00:00","dateModified":"2017-04-13T16:52:01+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/paul\/"},{"@type":"ListItem","position":2,"name":"Using the Dedicated Admin Connection to fix Msg 8992: corrupt system tables"}]},{"@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\/1046","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=1046"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/1046\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/media?parent=1046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/categories?post=1046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/tags?post=1046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}