{"id":597,"date":"2011-03-10T08:11:00","date_gmt":"2011-03-10T08:11:00","guid":{"rendered":"\/blogs\/paul\/post\/Disaster-recovery-101-fixing-metadata-corruption-without-a-backup.aspx"},"modified":"2017-04-13T09:54:42","modified_gmt":"2017-04-13T16:54:42","slug":"disaster-recovery-101-fixing-metadata-corruption-without-a-backup","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/","title":{"rendered":"Disaster recovery 101: fixing metadata corruption without a backup"},"content":{"rendered":"<p><span style=\"font-family: verdana, geneva; font-size: small;\">(Check out my online training courses:\u00a0<a href=\"http:\/\/www.pluralsight.com\/courses\/sqlserver-database-corruption\" target=\"_blank\">SQL Server: Detecting and Correcting Database Corruption<\/a>\u00a0and\u00a0<a href=\"http:\/\/www.pluralsight.com\/courses\/sqlserver-advanced-corruption-recovery-techniques\" target=\"_blank\">SQL Server: Advanced Corruption Recovery Techniques<\/a>. We can also\u00a0<a href=\"https:\/\/www.sqlskills.com\/services\/sql-server-disaster-recovery\/\" target=\"_blank\">help you<\/a>\u00a0with disaster recovery.)<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">Yesterday on the MVP newsgroup someone was asking how to fix some metadata corruption when their backups all had the corruption in too. There are two options: export everything out to a new database or roll up your sleeves and manually fix the system tables.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">Although some people may think this is scary and dangerous to do, it really isn&#8217;t that bad if you take your time. Take a database backup beforehand just in case you do the wrong thing.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">The best that can happen is that you fix the unfixable corruption in a short amount of time and you&#8217;re the hero of the hour. However, you&#8217;re still going to have to perform the export at some point later &#8211; read on to find out why.<\/span><\/p>\n<p><strong><span style=\"font-family: verdana, geneva; font-size: large;\">Be aware that the techniques I&#8217;m going to tell you are undocumented and unsupported. Use at your own risk.<\/span><\/strong><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">There, that&#8217;s the scary part. I have to say that or my good friend Bob Ward (<\/span><a href=\"http:\/\/blogs.msdn.com\/b\/psssql\/\"><span style=\"font-family: verdana, geneva; font-size: small;\">blog<\/span><\/a><span style=\"font-family: verdana, geneva; font-size: small;\">|<\/span><a href=\"https:\/\/twitter.com\/bobwardms\"><span style=\"font-family: verdana, geneva; font-size: small;\">twitter<\/span><\/a><span style=\"font-family: verdana, geneva; font-size: small;\">) won&#8217;t like me any more. Seriously though, be careful with this stuff and read the next part below because if you do this to your database, CSS may refuse to help you with further corruption.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">You can download the pre-corrupted 2008 SP1 database from <\/span><a href=\"https:\/\/www.sqlskills.com\/resources\/conferences\/corrupt.zip\"><span style=\"font-family: verdana, geneva; font-size: small;\">corrupt.zip<\/span><\/a><span style=\"font-family: verdana, geneva; font-size: small;\">\u00a0(~1MB). If you&#8217;re on 2005, there is a set of instructions in the zip that shows you how to create the corrupt database. Just be careful that you don&#8217;t accidentally corrupt master, like I did, and then have to fix that too.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">When you restore the database and run <span style=\"font-family: 'courier new', courier;\">DBCC CHECKDB<\/span>, you&#8217;ll see the following:<\/span><\/p>\n<blockquote><p><span style=\"font-family: 'courier new', courier; font-size: small;\">DBCC CHECKDB (corrupt) WITH NO_INFOMSGS;<br \/>\nGO<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier; font-size: small;\">Msg 0, Level 20, State 0, Line 0<br \/>\nA severe error occurred on the current command.\u00a0 The results, if any, should be discarded.<\/span><\/p><\/blockquote>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">So try <span style=\"font-family: 'courier new', courier;\">DBCC CHECKCATALOG<\/span>:<\/span><\/p>\n<blockquote><p><span style=\"font-family: 'courier new', courier; font-size: small;\">DBCC CHECKCATALOG (corrupt) WITH NO_INFOMSGS;<br \/>\nGO<\/span><\/p>\n<p><span><span style=\"font-size: small;\"><span style=\"font-family: 'courier new', courier;\"><strong>Warning: The system catalog was updated directly in database ID 12, most recently at Mar 10 2011\u00a0 8:09AM.<br \/>\n<\/strong>Msg 3853, Level 16, State 1, Line 1<br \/>\nAttribute (object_id=2105058535) of row (object_id=2105058535,column_id=1) in sys.columns does not have a matching row (object_id=2105058535) in sys.objects.<br \/>\nMsg 3853, Level 16, State 1, Line 1<br \/>\nAttribute (object_id=2105058535) of row (object_id=2105058535,index_id=1) in sys.indexes does not have a matching row (object_id=2105058535) in sys.objects.<br \/>\nMsg 3855, Level 16, State 1, Line 1<br \/>\nAttribute (data_space_id=1) exists without a row (object_id=2105058535,index_id=1) in sys.indexes.<br \/>\nMsg 3853, Level 16, State 1, Line 1<br \/>\nAttribute (parent_object_id=2105058535) of row (object_id=5575058) in sys.objects does not have a matching row (object_id=2105058535) in sys.objects.<\/span><\/span><\/span><\/p><\/blockquote>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">Look at what I highlighted in bold. In 2008 onwards, if you make direct modifications to the system catalogs using the techniques I describe, that fact is persisted for all time in the database and CSS will likely refuse to help you with further corruption issues.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">I first blogged about the techniques for fixing this back in 2008 in <\/span><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/using-the-dedicated-admin-connection-to-fix-msg-8992-corrupt-system-tables\/\"><span style=\"font-family: verdana, geneva; font-size: small;\">this blog post<\/span><\/a><span style=\"font-family: verdana, geneva; font-size: small;\">. You&#8217;re going to have to manually alter the &#8216;hidden&#8217; system tables. To do this you&#8217;ll need to shutdown the server, add &#8216;<span style=\"font-family: 'courier new', courier;\">-m;<\/span>&#8216; to the start of the startup parameter string in the Advanced tab of the SQL Server Configuration Manager, startup the server again and connect using the Dedicated Admin Connection (using &#8216;<span style=\"font-family: 'courier new', courier;\">admin:<\/span>&#8216; as the prefix to your connection string in SSMS or <span style=\"font-family: 'courier new', courier;\">SQLCMD -A<\/span>). If you&#8217;re not comfortable with any of this, walk away now.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">The system tables we&#8217;ve known and loved for ever basically map to three of the hidden system tables:<\/span><\/p>\n<ul>\n<li>\n<div><span style=\"font-family: verdana, geneva; font-size: small;\"><span style=\"font-family: 'courier new', courier;\">Sysindexes<\/span> is <span style=\"font-family: 'courier new', courier;\">sys.sysidxstats<\/span><\/span><\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: verdana, geneva; font-size: small;\"><span style=\"font-family: 'courier new', courier;\">Sysobjects<\/span> is <span style=\"font-family: 'courier new', courier;\">sys.sysschobjs<\/span><\/span><\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: verdana, geneva; font-size: small;\"><span style=\"font-family: 'courier new', courier;\">Syscolumns<\/span> is <span style=\"font-family: 'courier new', courier;\">sys.syscolpars<\/span><\/span><\/div>\n<\/li>\n<\/ul>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">You can see that these tables exist by doing a <span style=\"font-family: 'courier new', courier;\">SELECT * FROM sys.objects<\/span> but you can&#8217;t select from then until you connect using the DAC, and you can&#8217;t modify them unless you&#8217;re connected with the DAC and the server is in single-user mode.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">As far as the errors from <span style=\"font-family: 'courier new', courier;\">DBCC CHECKCATALOG<\/span> are concerned, they mean:<\/span><\/p>\n<ol>\n<li>\n<div><span style=\"font-family: verdana, geneva; font-size: small;\">There&#8217;s an extra row in <span style=\"font-family: 'courier new', courier;\">sys.syscolpars<\/span><\/span><\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: verdana, geneva; font-size: small;\">There&#8217;s an extra row in <span style=\"font-family: 'courier new', courier;\">sys.sysidxstats<\/span><\/span><\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: verdana, geneva; font-size: small;\">There&#8217;s an extra row in <span style=\"font-family: 'courier new', courier;\">sys.sysidxstats<\/span><\/span><\/div>\n<\/li>\n<li>\n<div><span style=\"font-family: verdana, geneva; font-size: small;\">There&#8217;s an extra row in <span style=\"font-family: 'courier new', courier;\">sys.sysschobjs<\/span><\/span><\/div>\n<\/li>\n<\/ol>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">To fix these errors, run the following code:<\/span><\/p>\n<blockquote><p><span style=\"font-family: 'courier new', courier; font-size: small;\">USE corrupt;<br \/>\nGO<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier; font-size: small;\">DELETE FROM sys.syscolpars WHERE ID=2105058535;<br \/>\nGO<br \/>\nDELETE FROM sys.sysidxstats WHERE ID=2105058535;<br \/>\nGO<br \/>\nDELETE FROM sys.sysschobjs WHERE ID=5575058;<br \/>\nGO<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier; font-size: small;\">Warning: 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.<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier; font-size: small;\">(1 row(s) affected)<br \/>\nWarning: System table ID 54 has been updated directly in database ID 12 and cache coherence may not have been maintained. SQL Server should be restarted.<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier; font-size: small;\">(1 row(s) affected)<br \/>\nWarning: System table ID 34 has been updated directly in database ID 12 and cache coherence may not have been maintained. SQL Server should be restarted.<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier; font-size: small;\">(1 row(s) affected)<\/span><\/p><\/blockquote>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">And then <span style=\"font-family: 'courier new', courier;\">DBCC CHECKDB<\/span> will come back clean, and <span style=\"font-family: 'courier new', courier;\">DBCC CHECKCATALOG<\/span> will be clean apart from the message about the system catalog being updated.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva; font-size: small;\">And there you have it &#8211; a way to quickly fix metadata corruptions before having to do the export at a later date.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Check out my online training courses:\u00a0SQL Server: Detecting and Correcting Database Corruption\u00a0and\u00a0SQL Server: Advanced Corruption Recovery Techniques. We can also\u00a0help you\u00a0with disaster recovery.) Yesterday on the MVP newsgroup someone was asking how to fix some metadata corruption when their backups all had the corruption in too. There are two options: export everything out to a [&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,34,35],"tags":[],"class_list":["post-597","post","type-post","status-publish","format-standard","hentry","category-corruption","category-dbcc","category-disaster-recovery"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Disaster recovery 101: fixing metadata corruption without a backup - 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\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Disaster recovery 101: fixing metadata corruption without a backup - Paul S. Randal\" \/>\n<meta property=\"og:description\" content=\"(Check out my online training courses:\u00a0SQL Server: Detecting and Correcting Database Corruption\u00a0and\u00a0SQL Server: Advanced Corruption Recovery Techniques. We can also\u00a0help you\u00a0with disaster recovery.) Yesterday on the MVP newsgroup someone was asking how to fix some metadata corruption when their backups all had the corruption in too. There are two options: export everything out to a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/\" \/>\n<meta property=\"og:site_name\" content=\"Paul S. Randal\" \/>\n<meta property=\"article:published_time\" content=\"2011-03-10T08:11:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T16:54: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=\"4 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\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/\",\"name\":\"Disaster recovery 101: fixing metadata corruption without a backup - Paul S. Randal\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\"},\"datePublished\":\"2011-03-10T08:11:00+00:00\",\"dateModified\":\"2017-04-13T16:54:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Disaster recovery 101: fixing metadata corruption without a backup\"}]},{\"@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":"Disaster recovery 101: fixing metadata corruption without a backup - 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\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/","og_locale":"en_US","og_type":"article","og_title":"Disaster recovery 101: fixing metadata corruption without a backup - Paul S. Randal","og_description":"(Check out my online training courses:\u00a0SQL Server: Detecting and Correcting Database Corruption\u00a0and\u00a0SQL Server: Advanced Corruption Recovery Techniques. We can also\u00a0help you\u00a0with disaster recovery.) Yesterday on the MVP newsgroup someone was asking how to fix some metadata corruption when their backups all had the corruption in too. There are two options: export everything out to a [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/","og_site_name":"Paul S. Randal","article_published_time":"2011-03-10T08:11:00+00:00","article_modified_time":"2017-04-13T16:54:42+00:00","author":"Paul Randal","twitter_misc":{"Written by":"Paul Randal","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/","name":"Disaster recovery 101: fixing metadata corruption without a backup - Paul S. Randal","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website"},"datePublished":"2011-03-10T08:11:00+00:00","dateModified":"2017-04-13T16:54:42+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/disaster-recovery-101-fixing-metadata-corruption-without-a-backup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/paul\/"},{"@type":"ListItem","position":2,"name":"Disaster recovery 101: fixing metadata corruption without a backup"}]},{"@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\/597","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=597"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/597\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/media?parent=597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/categories?post=597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/tags?post=597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}