{"id":29,"date":"2021-01-27T11:33:41","date_gmt":"2021-01-27T14:33:41","guid":{"rendered":"http:\/\/belavista.net.br\/?p=29"},"modified":"2021-01-27T11:39:59","modified_gmt":"2021-01-27T14:39:59","slug":"socorro-meu-banco-de-dados-esta-corrompido-o-que-agora","status":"publish","type":"post","link":"https:\/\/belavista.net.br\/?p=29","title":{"rendered":"Socorro, meu banco de dados est\u00e1 corrompido. O que agora?"},"content":{"rendered":"\n<p>Um banco de dados corrompido \u00e9 provavelmente um dos piores pesadelos do DBA.&nbsp;Isso resulta em tempo de inatividade, gritos de gerentes e todos os outros tipos de coisas desagrad\u00e1veis<\/p>\n\n\n\n<p>Neste artigo, vou explicar algumas das coisas que n\u00e3o devem ser feitas em um banco de dados corrompido e, em seguida, examinarei algumas das coisas que devem ser feitas, alguns dos cen\u00e1rios e as corre\u00e7\u00f5es para eles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como identificar corrup\u00e7\u00e3o<\/h2>\n\n\n\n<p>A corrup\u00e7\u00e3o \u00e9 normalmente bastante \u00f3bvia quando algu\u00e9m percorre as p\u00e1ginas danificadas.&nbsp;As consultas falham com erros de alta gravidade.&nbsp;Os backups ou tarefas de reindexa\u00e7\u00e3o falham com erros de alta gravidade.&nbsp;Algumas mensagens que indicam corrup\u00e7\u00e3o em um banco de dados s\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">SQL Server detected a logical consistency-based I\/O error: incorrect checksum (expected: 0xfdff74c9; actual: 0xfdff74cb). It occurred during a read of page (1:69965) in database ID 13 at offset 0x0000002229a000 in file 'D:\\Develop\\Databases\\Broken1.mdf'. Attempt to fetch logical page 1:69965 in database 13 failed. It belongs to allocation unit 72057594049069056 not to 281474980642816.  \n<\/pre>\n\n\n\n<p>O principal problema \u00e9 que, se as verifica\u00e7\u00f5es regulares de integridade do banco de dados n\u00e3o estiverem sendo feitas, a corrup\u00e7\u00e3o pode ser detectada horas, dias ou at\u00e9 meses ap\u00f3s ter ocorrido, ponto em que pode ser dif\u00edcil de resolver<\/p>\n\n\n\n<p>N\u00e3o vou cobrir a situa\u00e7\u00e3o em que o banco de dados est\u00e1 em um estado suspeito.&nbsp;Cobrindo as poss\u00edveis raz\u00f5es pelas quais um banco de dados \u00e9 suspeito, os m\u00e9todos para descobrir porque \u00e9 suspeito e os v\u00e1rios meios de consertar isso s\u00e3o um artigo inteiro em si, se n\u00e3o um livro completo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que fazer quando o banco de dados est\u00e1 corrompido.<\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li>N\u00e3o entre em p\u00e2nico<\/li><li>N\u00e3o desanexe o banco de dados<\/li><li>N\u00e3o reinicie o SQL<\/li><li>N\u00e3o execute apenas o reparo.<\/li><li>Execute uma verifica\u00e7\u00e3o de integridade<\/li><li>Depois, fa\u00e7a uma an\u00e1lise da causa raiz<\/li><\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">N\u00e3o entre em p\u00e2nico<\/h4>\n\n\n\n<p>A coisa mais importante ao lidar com corrup\u00e7\u00e3o de banco de dados de qualquer forma \u00e9 n\u00e3o entrar em p\u00e2nico.&nbsp;Quaisquer decis\u00f5es ou a\u00e7\u00f5es tomadas devem ser cuidadosamente pensadas e feitas ap\u00f3s uma considera\u00e7\u00e3o cuidadosa com todos os fatores levados em considera\u00e7\u00e3o.&nbsp;\u00c9 muito f\u00e1cil piorar a situa\u00e7\u00e3o com decis\u00f5es mal pensadas.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">N\u00e3o desanexe o banco de dados<\/h4>\n\n\n\n<p>Embora seja poss\u00edvel que a mensagem de corrup\u00e7\u00e3o descreva uma condi\u00e7\u00e3o transit\u00f3ria, essa n\u00e3o \u00e9 a situa\u00e7\u00e3o normal.&nbsp;Na grande maioria dos casos, se o SQL detectar corrup\u00e7\u00e3o em um banco de dados, isso significa que realmente existem algumas p\u00e1ginas danificadas no banco de dados.&nbsp;Tentar enganar o SQL para n\u00e3o ver isso, desanexando e reanexando o banco de dados, fazendo backup e restaurando o banco de dados, reiniciando o servi\u00e7o SQL ou reinicializando a m\u00e1quina, n\u00e3o far\u00e1 com que a corrup\u00e7\u00e3o desapare\u00e7a.<\/p>\n\n\n\n<p>Se houver corrup\u00e7\u00e3o no banco de dados e o SQL detectar essa corrup\u00e7\u00e3o ao anexar o banco de dados, a conex\u00e3o falhar\u00e1.&nbsp;Existem maneiras de hackear o banco de dados de volta para SQL, mas \u00e9 muito melhor simplesmente n\u00e3o desanexar o banco de dados em primeiro lugar<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">N\u00e3o reinicie o SQL<\/h4>\n\n\n\n<p>Semelhante \u00e0 desanexa\u00e7\u00e3o, reiniciar o servi\u00e7o SQL n\u00e3o corrigir\u00e1 a corrup\u00e7\u00e3o se ela estiver presente.<\/p>\n\n\n\n<p>Tal como acontece com a desanexa\u00e7\u00e3o do banco de dados, reiniciar o servi\u00e7o pode piorar as coisas.&nbsp;Se o SQL Server encontrar danos ao executar a recupera\u00e7\u00e3o de reinicializa\u00e7\u00e3o em um banco de dados, esse banco de dados ser\u00e1 marcado como suspeito, tornando qualquer reparo necess\u00e1rio muito mais dif\u00edcil de realizar.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">N\u00e3o execute apenas o reparo<\/h4>\n\n\n\n<p>Pode ser tentador apenas executar CheckDB com uma das op\u00e7\u00f5es de reparo (normalmente permite a perda de dados) e acreditar que isso tornar\u00e1 tudo melhor.&nbsp;Em muitos casos, executar o reparo n\u00e3o \u00e9 a corre\u00e7\u00e3o recomendada.&nbsp;N\u00e3o h\u00e1 garantia de corre\u00e7\u00e3o de todos os erros e isso pode resultar em perda de dados inaceit\u00e1vel.<\/p>\n\n\n\n<p>A repara\u00e7\u00e3o \u00e9, na maioria dos casos, o \u00faltimo recurso para consertar a corrup\u00e7\u00e3o.&nbsp;Deve ser feito apenas quando nenhuma das alternativas \u00e9 poss\u00edvel, n\u00e3o feito como a primeira coisa tentada.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Execute uma verifica\u00e7\u00e3o de integridade<\/h4>\n\n\n\n<p>Para decidir sobre um m\u00e9todo de reparar a corrup\u00e7\u00e3o, os detalhes de exatamente o que est\u00e1 danificado devem ser conhecidos.&nbsp;A \u00fanica maneira de obter essas informa\u00e7\u00f5es \u00e9 executar CheckDB com a op\u00e7\u00e3o All_ErrorMsgs (no 2005 SP3, esta \u00e9 uma op\u00e7\u00e3o padr\u00e3o em CheckDB e n\u00e3o precisa ser especificada. Ela precisa ser especificada no SQL 2008).&nbsp;Al\u00e9m disso, a op\u00e7\u00e3o No_Infomsgs remove todas as informa\u00e7\u00f5es sobre o n\u00famero de linhas e o n\u00famero de p\u00e1ginas da tabela, o que \u00e9 desnecess\u00e1rio ao lidar com danos.<\/p>\n\n\n\n<p>CheckDB pode demorar um pouco em bancos de dados maiores, mas \u00e9 necess\u00e1rio deix\u00e1-lo ser executado at\u00e9 o fim.&nbsp;Uma estrat\u00e9gia de reparo n\u00e3o deve ser considerada sem conhecer todos os problemas no banco de dados<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Causa raiz<\/h4>\n\n\n\n<p>Uma vez que a corrup\u00e7\u00e3o foi resolvida, o trabalho n\u00e3o acabou.&nbsp;Se a causa raiz da corrup\u00e7\u00e3o n\u00e3o for encontrada, pode acontecer novamente.&nbsp;Normalmente, a principal causa de corrup\u00e7\u00e3o s\u00e3o problemas com o subsistema de E \/ S.&nbsp;Outras causas poss\u00edveis s\u00e3o drivers de filtro com comportamento inadequado (como um antiv\u00edrus), interven\u00e7\u00e3o humana ou um bug no SQL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00f3ximos passos<\/h2>\n\n\n\n<p>As etapas para resolver a corrup\u00e7\u00e3o dependem inteiramente dos resultados do CheckDB.&nbsp;Vou passar por alguns dos cen\u00e1rios mais comuns aqui.&nbsp;Este n\u00e3o \u00e9 um documento abrangente de todas as poss\u00edveis corrup\u00e7\u00f5es em um banco de dados.&nbsp;<sup>1<\/sup><\/p>\n\n\n\n<p>Esta lista est\u00e1 em ordem aproximada de gravidade, do problema menos grave ao mais grave.&nbsp;Cada um tem um exemplo de poss\u00edveis mensagens de erro que indicam esse problema espec\u00edfico.&nbsp;Em geral, o erro mais grave encontrado pelo CheckDB determina os m\u00e9todos dispon\u00edveis para resolver o problema de corrup\u00e7\u00e3o.<\/p>\n\n\n\n<p>Se algu\u00e9m encontrar um erro que n\u00e3o esteja detalhado aqui, consulte a \u00faltima se\u00e7\u00e3o &#8211; Obtendo Ajuda.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Metadados de espa\u00e7o imprecisos<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">Inaccurate space metadata\n\nMsg 2508, Level 16, State 3, Line 1\nThe In-row data RSVD page count for object \"Broken1\", index ID 0, partition ID 76911687695381, alloc unit ID 76911687695381 (type In-row data) is incorrect. Run DBCC UPDATEUSAGE.\n<\/pre>\n\n\n\n<p>Este erro indica que a p\u00e1gina possui um valor incorreto para o espa\u00e7o reservado.&nbsp;No SQL 2000, era poss\u00edvel que as contagens de linhas e p\u00e1ginas de uma tabela ou \u00edndice estivessem incorretas, at\u00e9 mesmo negativas.&nbsp;CheckDB n\u00e3o pegou isso.&nbsp;No SQL 2005, as contagens devem ser mantidas corretamente e o CheckDB d\u00e1 um aviso quando encontra este cen\u00e1rio<\/p>\n\n\n\n<p>Este n\u00e3o \u00e9 um problema s\u00e9rio e \u00e9 trivial de corrigir.&nbsp;Como diz a mensagem, execute DBCC UPDATEUSAGE no banco de dados em quest\u00e3o e os avisos desaparecer\u00e3o.&nbsp;Isso \u00e9 comum em bancos de dados atualizados do SQL 2000, pelos motivos mencionados acima, e n\u00e3o deve ocorrer no banco de dados criado no SQL 2005\/2008.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Msg 8914, Level 16, State 1, Line 1\nIncorrect PFS free space information for page (1:26839) in object ID 181575685, index ID 1, partition ID 293374720802816, alloc unit ID 76911687695381 (type LOB data). Expected value 0_PCT_FULL, actual value 100_PCT_FULL.\n<\/pre>\n\n\n\n<p>Este erro indica que a p\u00e1gina PFS (espa\u00e7o livre da p\u00e1gina) que rastreia a quantidade de p\u00e1ginas inteiras tem valores incorretos.&nbsp;Isso, como o erro acima, n\u00e3o \u00e9 s\u00e9rio.&nbsp;O algoritmo que rastreou isso no SQL 2000 nem sempre foi preciso.&nbsp;Embora seja necess\u00e1rio executar CheckDB com a op\u00e7\u00e3o Repair_Allow_Data_Loss, se este for o \u00fanico erro que existe, ele n\u00e3o excluir\u00e1 nenhum dado.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Corrup\u00e7\u00e3o apenas nos \u00edndices n\u00e3o clusterizados<\/h4>\n\n\n\n<p>Se todos os erros que checkDB retorna se referem a \u00edndices com IDs de 2 ou mais, isso indica que toda a corrup\u00e7\u00e3o est\u00e1 dentro dos \u00edndices n\u00e3o agrupados.&nbsp;Como os dados em um \u00edndice n\u00e3o clusterizado s\u00e3o redundantes, essas corrup\u00e7\u00f5es podem ser reparadas sem perda de dados.<\/p>\n\n\n\n<p>Se todos os erros que o CheckDB detecta estiverem nos \u00edndices n\u00e3o clusterizados, o n\u00edvel de reparo recomendado ser\u00e1 Repair_Rebuild.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Msg 8941, Level 16, State 1, Line 1\nTable error: Object ID 181575685, index ID 4, page (3:224866). Test (sorted .offset >= PAGEHEADSIZE) failed. Slot 159, offset 0x1 is invalid.\n\nMsg 8942, Level 16, State 1, Line 1\nTable error: Object ID 181575685, index ID 4, page (3:224866). Test (sorted.offset >= max) failed. Slot 0, offset 0x9f overlaps with the prior row.<\/pre>\n\n\n\n<p>Esses s\u00e3o apenas exemplos;&nbsp;existem muitos mais erros poss\u00edveis.<\/p>\n\n\n\n<p>Nesse caso, a corrup\u00e7\u00e3o pode ser completamente reparada eliminando os \u00edndices n\u00e3o clusterizados danificados e recriando-os.&nbsp;As reconstru\u00e7\u00f5es de \u00edndice online (e algumas das reconstru\u00e7\u00f5es de \u00edndice offline) l\u00eaem o \u00edndice antigo para criar o novo e, portanto, encontrar\u00e1 a corrup\u00e7\u00e3o.&nbsp;Portanto, \u00e9 necess\u00e1rio descartar completamente o \u00edndice antigo e criar um novo.<\/p>\n\n\n\n<p>Isso \u00e9 principalmente o que CheckDB com a op\u00e7\u00e3o repair_rebuild far\u00e1, entretanto, o banco de dados deve estar no modo de usu\u00e1rio \u00fanico para que o reparo seja feito.&nbsp;Portanto, geralmente \u00e9 melhor reconstruir manualmente os \u00edndices, pois o banco de dados pode permanecer online e em uso enquanto os \u00edndices afetados s\u00e3o recriados.<\/p>\n\n\n\n<p>Se n\u00e3o houver tempo suficiente dispon\u00edvel para reconstruir o \u00edndice afetado e houver um backup limpo com uma cadeia de log ininterrupta, as p\u00e1ginas danificadas podem ser restauradas do backup.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Corrup\u00e7\u00e3o nas p\u00e1ginas LOB<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">Corruption in the LOB pages\nMsg 8964, Level 16, State 1, Line 1\nTable error: Object ID 181575685, index ID 1, partition ID 72057594145669120, alloc unit ID 72057594087800832 (type LOB data). The off-row data node at page (1:2444050), slot 0, text ID 901891555328 is not referenced.\n<\/pre>\n\n\n\n<p>Isso indica que h\u00e1 p\u00e1ginas LOB (objeto grande) que n\u00e3o s\u00e3o referenciadas por nenhuma linha de dados.&nbsp;Isso pode acontecer se houver corrup\u00e7\u00e3o do \u00edndice clusterizado ou heap e as p\u00e1ginas danificadas forem desalocadas.<\/p>\n\n\n\n<p>Se esses forem os \u00fanicos erros retornados pelo CheckDB, executar o reparo com Allow_Data_Loss simplesmente desalocar\u00e1 essas p\u00e1ginas.&nbsp;Como as linhas de dados \u00e0s quais os dados LOB pertencem n\u00e3o existem, isso n\u00e3o resultar\u00e1 em mais perda de dados.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Erros de pureza de dados<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">Data Purity errors\nMsg 2570, Sev 16, State 3, Line 17\nPage (1:1103587), slot 24 in object ID 34, index ID 1, partition ID 281474978938880, alloc unit ID 281474978938880 (type \"In-row data\"). Column \"modified\" value is out of range for data type \"datetime\". Update column to a legal value.\n<\/pre>\n\n\n\n<p>O erro de pureza dos dados indica que h\u00e1 um valor na coluna que est\u00e1 fora do intervalo aceit\u00e1vel da coluna.&nbsp;Pode ser uma data e hora em que os minutos ap\u00f3s a meia-noite excedem 1440, uma string Unicode onde o n\u00famero de bytes n\u00e3o \u00e9 um m\u00faltiplo de 2, ou um float ou real com um valor de ponto flutuante inv\u00e1lido.<\/p>\n\n\n\n<p>Esses erros n\u00e3o s\u00e3o verificados por padr\u00e3o em um banco de dados atualizado do SQL 2000 ou inferior.&nbsp;CheckDB deve ser executado com sucesso uma vez, com a op\u00e7\u00e3o DATA_PURITY antes<\/p>\n\n\n\n<p>CheckDB n\u00e3o vai consertar isso.&nbsp;Ele n\u00e3o sabe quais valores colocar na coluna para substituir os inv\u00e1lidos.&nbsp;A corre\u00e7\u00e3o para isso \u00e9 bastante f\u00e1cil, mas manual.&nbsp;Os valores ruins devem ser atualizados anualmente para algo significativo.&nbsp;O principal desafio \u00e9 encontrar as linhas ruins.&nbsp;Este artigo da KB descreve as etapas em detalhes.&nbsp;<a href=\"http:\/\/support.microsoft.com\/kb\/923247\">http:\/\/support.microsoft.com\/kb\/923247<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Corrup\u00e7\u00e3o no \u00edndice clusterizado ou heap<\/h4>\n\n\n\n<p>Se houver corrup\u00e7\u00e3o nas p\u00e1ginas folha do \u00edndice clusterizado ou no heap, isso significa que os dados foram perdidos.&nbsp;As p\u00e1ginas de folha do \u00edndice clusterizado s\u00e3o as p\u00e1ginas de dados reais da tabela e, portanto, essa n\u00e3o \u00e9 uma informa\u00e7\u00e3o redundante.<\/p>\n\n\n\n<p>Se algum dos erros detectados pelo CheckDB estiver nas p\u00e1ginas de folha do \u00edndice clusterizado, o n\u00edvel de reparo recomendado ser\u00e1 Repair_Allow_Data_Loss<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><a href=\"Server: Msg 8976, Level 16, State 1, Line 2 Table error: Object ID 181575685, index ID 1, partition ID 76911687695381, alloc unit ID 76911687695381 (type In-row data). Page (1:22417) was not seen in the scan although its parent (1:479) and previous (1:715544) refer to it.\nServer: Msg 8939, Level 16, State 1, Line 2 Table error: Object ID 181575685, index ID 0, page (1:168576). Test (m_freeData &gt;= PAGEHEADSIZE &amp;&amp; m_freeData <= (UINT)PAGESIZE - m_slotCnt * sizeof (Slot)) failed. Values are 44 and 8028.\">Server: Msg 8976, Level 16, State 1, Line 2\nTable error: Object ID 181575685, index ID 1, partition ID 76911687695381, alloc unit ID 76911687695381 (type In-row data). Page (1:22417) was not seen in the scan although its parent (1:479) and previous (1:715544) refer to it. Server: Msg 8939, Level 16, State 1, Line 2\nTable error: Object ID 181575685, index ID 0, page (1:168576). Test (m_freeData >= PAGEHEADSIZE &amp;&amp; m_freeData &lt;= (UINT)PAGESIZE - m_slotCnt * sizeof (Slot)) failed. Values are 44 and 8028.<\/a>\n<\/pre>\n\n\n\n<p>Esses s\u00e3o apenas exemplos;&nbsp;existem muitos mais erros poss\u00edveis.&nbsp;O que se deve notar \u00e9 que o ID do \u00edndice mencionado \u00e9 0 ou 1. Se algum dos erros retornados pelo CheckDB tiver um ID do \u00edndice 0 ou 1, significa que h\u00e1 danos \u00e0s tabelas base.<\/p>\n\n\n\n<p>Esse tipo de dano \u00e9 repar\u00e1vel, mas repar\u00e1-lo envolve o descarte de linhas ou p\u00e1ginas inteiras.&nbsp;Se CheckDB excluir dados para corrigir a corrup\u00e7\u00e3o, ele n\u00e3o verificar\u00e1 as chaves estrangeiras e n\u00e3o disparar\u00e1 gatilhos.&nbsp;As linhas ou p\u00e1ginas ser\u00e3o simplesmente desalocadas.&nbsp;Isso pode resultar em viola\u00e7\u00f5es de integridade de dados (registros filho sem um pai) e pode resultar em inconsist\u00eancias l\u00f3gicas do banco de dados (linhas de \u00edndice n\u00e3o clusterizadas ou p\u00e1ginas LOB que n\u00e3o fazem mais refer\u00eancia a uma linha).&nbsp;Como tal, o reparo n\u00e3o \u00e9 a rota recomendada.<\/p>\n\n\n\n<p>Se houver um backup limpo, a restaura\u00e7\u00e3o do backup geralmente \u00e9 o m\u00e9todo recomendado para corrigir esses erros.&nbsp;Se o banco de dados estiver em recupera\u00e7\u00e3o total e houver uma cadeia de log ininterrupta desde o backup do banco de dados limpo, ent\u00e3o \u00e9 poss\u00edvel fazer backup do final do log de transa\u00e7\u00f5es e restaurar todo o banco de dados ou apenas as p\u00e1ginas danificadas, sem perda de dados em todos.<\/p>\n\n\n\n<p>Se n\u00e3o houver um backup limpo, \u00e9 necess\u00e1rio executar CheckDB com a op\u00e7\u00e3o Repair_allow_data_loss.&nbsp;Isso requer que o banco de dados esteja no modo de usu\u00e1rio \u00fanico durante o reparo.<\/p>\n\n\n\n<p>Pode ser poss\u00edvel determinar o que CheckDB excluir\u00e1, para um \u00edndice clusterizado.&nbsp;Veja esta postagem do blog &#8211;&nbsp;<a href=\"http:\/\/sqlskills.com\/BLOGS\/PAUL\/post\/CHECKDB-From-Every-Angle-Using-DBCC-PAGE-to-find-what-repair-will-delete.aspx\">http:\/\/sqlskills.com\/BLOGS\/PAUL\/post\/CHECKDB-From-Every-Angle-Using-DBCC-PAGE-to-find-what-repair-will-delete.aspx<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Corrup\u00e7\u00e3o nos Metadados<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">Corruption in the Metadata\nMsg 3853, Level 16, State 1, Line 1\nAttribute (object_id=181575685) of row (object_id=181575685,column_id=1) in sys.columns does not have a matching row (object_id=181575685) in sys.objects.\n<\/pre>\n\n\n\n<p>Esse tipo de erro geralmente aparece em um banco de dados atualizado do SQL 2000, onde algu\u00e9m fez atualiza\u00e7\u00f5es diretas nas tabelas do sistema.<\/p>\n\n\n\n<p>N\u00e3o h\u00e1 chaves estrangeiras impostas entre as tabelas do sistema em qualquer vers\u00e3o do SQL, ent\u00e3o era poss\u00edvel no SQL 2000 excluir uma linha de sysobjects (por exemplo, uma tabela) e deixar as linhas em syscolumns e sysindexes que fazem refer\u00eancia \u00e0 linha exclu\u00edda.<\/p>\n\n\n\n<p>No SQL 2000, o CheckDB n\u00e3o fazia uma verifica\u00e7\u00e3o do cat\u00e1logo do sistema, ent\u00e3o esse tipo de problema geralmente passava completamente despercebido.&nbsp;No SQL 2005, CheckDB faz verifica\u00e7\u00f5es de consist\u00eancia do cat\u00e1logo do sistema e, portanto, esses erros podem aparecer.<\/p>\n\n\n\n<p>Consertar isso n\u00e3o \u00e9 trivial.&nbsp;O CheckDB n\u00e3o os reparar\u00e1, pois a \u00fanica corre\u00e7\u00e3o \u00e9 excluir os registros das tabelas do sistema, o que pode causar grande perda de dados.&nbsp;Se houver um backup do banco de dados anterior ao upgrade para o SQL 2005 e o upgrade for muito recente, esse backup pode ser restaurado no SQL 2000, as tabelas do sistema corrigidas no SQL 2000 e o banco de dados atualizado novamente.<\/p>\n\n\n\n<p>Se n\u00e3o houver backup do SQL 2000 ou se a atualiza\u00e7\u00e3o foi h\u00e1 muito tempo e a perda de dados \u00e9 inaceit\u00e1vel, h\u00e1 duas solu\u00e7\u00f5es poss\u00edveis.&nbsp;Primeiro, edite as tabelas do sistema no SQL 2005, que \u00e9 um processo complexo e muito arriscado, pois as tabelas do sistema n\u00e3o s\u00e3o documentadas e s\u00e3o muito mais complexas do que eram nas vers\u00f5es anteriores.&nbsp;Consulte esta postagem do blog para obter detalhes &#8211;&nbsp;<a href=\"http:\/\/www.sqlskills.com\/BLOGS\/PAUL\/post\/TechEd-Demo-Using-the-SQL-2005-Dedicated-Admin-Connection-to-fix-Msg-8992-corrupt-system-tables.aspx\">http:\/\/www.sqlskills.com\/BLOGS\/PAUL\/post\/TechEd-Demo-Using-the-SQL-2005-Dedicated-Admin-Connection-to-fix-Msg-8992-corrupt -system-tables.aspx<\/a><\/p>\n\n\n\n<p>A outra solu\u00e7\u00e3o \u00e9 gerar scripts de todos os objetos do banco de dados e exportar todos os dados.&nbsp;Crie um novo banco de dados, recrie os objetos e recarregue os dados.<\/p>\n\n\n\n<p>A segunda op\u00e7\u00e3o geralmente \u00e9 a recomendada.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Corrup\u00e7\u00e3o Irrepar\u00e1vel<\/h4>\n\n\n\n<p>CheckDB n\u00e3o pode reparar tudo.&nbsp;Quaisquer erros como esses s\u00e3o irrepar\u00e1veis \u200b\u200be a \u00fanica maneira de resolv\u00ea-los \u00e9 restaurar um backup do banco de dados que n\u00e3o esteja corrompido.&nbsp;Se houver uma cadeia de log completa e ininterrupta desse backup at\u00e9 o momento atual, o final do log pode ser copiado e o banco de dados pode ser restaurado sem qualquer perda de dados.<\/p>\n\n\n\n<p>Se n\u00e3o houver um backup limpo, a \u00fanica op\u00e7\u00e3o restante \u00e9 gerar scripts dos objetos do banco de dados e exportar os dados acess\u00edveis.&nbsp;\u00c9 bastante prov\u00e1vel, devido \u00e0 corrup\u00e7\u00e3o, que nem todos os dados estar\u00e3o acess\u00edveis e, muito provavelmente, nem todos os objetos executar\u00e3o o script sem erros.<\/p>\n\n\n\n<p><strong>Tabelas de sistema danificadas<\/strong><\/p>\n\n\n\n<p><strong>Damaged system tables<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Msg 7985, Level 16, State 2, Line 1<br> System table pre-checks: Object ID 4. Could not read and latch page (1:358) with latch type SH.<br> Check statement terminated due to unrepairable error.\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Msg 8921, Level 16, State 1, Line 1<br> Check terminated. A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent.<\/pre>\n\n\n\n<p>CheckDB depende de algumas das tabelas cr\u00edticas do sistema para obter uma vis\u00e3o do que deve estar no banco de dados.&nbsp;Se as pr\u00f3prias tabelas estiverem danificadas, o CheckDB n\u00e3o poder\u00e1 saber como o banco de dados deve se parecer e nem mesmo poder\u00e1 analis\u00e1-lo, muito menos repar\u00e1-lo.<\/p>\n\n\n\n<p><strong>P\u00e1ginas de aloca\u00e7\u00e3o danificadas<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>Damaged allocation pages<\/strong>\nMsg 8946, Level 16, State 12, Line 1\nTable error: Allocation page (1:2264640) has invalid PFS_PAGE page header values. Type is 0. Check type, alloc unit ID and page ID on the page.\nMsg 8998, Level 16, State 2, Line 1\nPage errors on the GAM, SGAM, or PFS pages prevent allocation integrity checks in database ID 13 pages from (1:2264640) to (1:2272727)\n<\/pre>\n\n\n\n<p>Nesse caso, uma ou mais p\u00e1ginas de aloca\u00e7\u00e3o de banco de dados est\u00e3o danificadas.&nbsp;As p\u00e1ginas de aloca\u00e7\u00e3o s\u00e3o usadas para marcar quais p\u00e1ginas e extens\u00f5es no banco de dados est\u00e3o alocadas e quais s\u00e3o gratuitas.&nbsp;CheckDB n\u00e3o reparar\u00e1 danos nas p\u00e1ginas de aloca\u00e7\u00e3o, pois \u00e9 extremamente dif\u00edcil descobrir, sem essas p\u00e1ginas, quais extens\u00f5es est\u00e3o alocadas e quais n\u00e3o.&nbsp;Descartar a p\u00e1gina de aloca\u00e7\u00e3o n\u00e3o \u00e9 uma op\u00e7\u00e3o, pois isso descartaria at\u00e9 4 GB de dados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Obtendo ajuda<\/h2>\n\n\n\n<p>Se voc\u00ea n\u00e3o tiver certeza do que fazer, pe\u00e7a ajuda.&nbsp;Se voc\u00ea se deparar com uma mensagem corrompida que n\u00e3o entende e que n\u00e3o est\u00e1 descrita aqui, pe\u00e7a ajuda.&nbsp;Se voc\u00ea n\u00e3o tiver certeza da melhor maneira de se recuperar, pe\u00e7a ajuda.<\/p>\n\n\n\n<p>A ajuda pode vir de v\u00e1rias formas.&nbsp;Se houver um DBA s\u00eanior, pergunte a eles.&nbsp;Se voc\u00ea tiver um mentor, pergunte a ele.&nbsp;Pergunte em um f\u00f3rum;&nbsp;os f\u00f3runs aqui, os grupos de not\u00edcias ou f\u00f3runs da Microsoft ou outro f\u00f3rum, se preferir.&nbsp;Esteja ciente de que nem todos os conselhos dados nos f\u00f3runs s\u00e3o bons conselhos.&nbsp;Na verdade, algumas sugest\u00f5es perigosas s\u00e3o postadas de vez em quando.<\/p>\n\n\n\n<p>Finalmente, considere ligar para o pessoal de suporte ao cliente da Microsoft.&nbsp;Eles cobrar\u00e3o, mas sabem como lidar com a corrup\u00e7\u00e3o e, se for um banco de dados cr\u00edtico do sistema que est\u00e1 inativo, o custo do suporte pode ser muito menor do que o custo do tempo de inatividade durante a busca por uma solu\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>Neste artigo, dei algumas sugest\u00f5es sobre como lidar com a corrup\u00e7\u00e3o e, mais importante, como n\u00e3o lidar com a corrup\u00e7\u00e3o.&nbsp;Espero que as pessoas tenham um melhor entendimento dos m\u00e9todos dispon\u00edveis para corrigir esses problemas e da import\u00e2ncia de bons backups.<\/p>\n\n\n\n<p>Fonte: https:\/\/www.sqlservercentral.com\/articles\/help-my-database-is-corrupt-now-what<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um banco de dados corrompido \u00e9 provavelmente um dos piores pesadelos do DBA.&nbsp;Isso resulta em tempo de inatividade, gritos de gerentes e todos os outros tipos de coisas desagrad\u00e1veis Neste artigo, vou explicar algumas das coisas que n\u00e3o devem ser feitas em um banco de dados corrompido e, em seguida, examinarei algumas das coisas que [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-29","post","type-post","status-publish","format-standard","hentry","category-sem-categoria"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Socorro, meu banco de dados est\u00e1 corrompido. O que agora? - Bela Vista NET<\/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:\/\/belavista.net.br\/?p=29\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Socorro, meu banco de dados est\u00e1 corrompido. O que agora? - Bela Vista NET\" \/>\n<meta property=\"og:description\" content=\"Um banco de dados corrompido \u00e9 provavelmente um dos piores pesadelos do DBA.&nbsp;Isso resulta em tempo de inatividade, gritos de gerentes e todos os outros tipos de coisas desagrad\u00e1veis Neste artigo, vou explicar algumas das coisas que n\u00e3o devem ser feitas em um banco de dados corrompido e, em seguida, examinarei algumas das coisas que [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/belavista.net.br\/?p=29\" \/>\n<meta property=\"og:site_name\" content=\"Bela Vista NET\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-27T14:33:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-27T14:39:59+00:00\" \/>\n<meta name=\"author\" content=\"M\u00e1rcio Alc\u00e2ntara\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"M\u00e1rcio Alc\u00e2ntara\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/belavista.net.br\\\/?p=29#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/belavista.net.br\\\/?p=29\"},\"author\":{\"name\":\"M\u00e1rcio Alc\u00e2ntara\",\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#\\\/schema\\\/person\\\/ffafd9c528cac7c249b89c41cdb674e3\"},\"headline\":\"Socorro, meu banco de dados est\u00e1 corrompido. O que agora?\",\"datePublished\":\"2021-01-27T14:33:41+00:00\",\"dateModified\":\"2021-01-27T14:39:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/belavista.net.br\\\/?p=29\"},\"wordCount\":3011,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#organization\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/belavista.net.br\\\/?p=29#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/belavista.net.br\\\/?p=29\",\"url\":\"https:\\\/\\\/belavista.net.br\\\/?p=29\",\"name\":\"Socorro, meu banco de dados est\u00e1 corrompido. O que agora? - Bela Vista NET\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#website\"},\"datePublished\":\"2021-01-27T14:33:41+00:00\",\"dateModified\":\"2021-01-27T14:39:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/belavista.net.br\\\/?p=29#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/belavista.net.br\\\/?p=29\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/belavista.net.br\\\/?p=29#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/belavista.net.br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Socorro, meu banco de dados est\u00e1 corrompido. O que agora?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#website\",\"url\":\"https:\\\/\\\/belavista.net.br\\\/\",\"name\":\"Bela Vista Net\",\"description\":\"Sistemas de Gest\u00e3o para o Varejo\",\"publisher\":{\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/belavista.net.br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#organization\",\"name\":\"Bela Vista Net\",\"url\":\"https:\\\/\\\/belavista.net.br\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/belavista.net.br\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/logo-horizontal-site.png\",\"contentUrl\":\"https:\\\/\\\/belavista.net.br\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/logo-horizontal-site.png\",\"width\":1000,\"height\":180,\"caption\":\"Bela Vista Net\"},\"image\":{\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/belavista.net.br\\\/#\\\/schema\\\/person\\\/ffafd9c528cac7c249b89c41cdb674e3\",\"name\":\"M\u00e1rcio Alc\u00e2ntara\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/56d54d98ebd9ccaf49dbbe80d593087863a7b88fe522b1039ab5bbf8076bba4d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/56d54d98ebd9ccaf49dbbe80d593087863a7b88fe522b1039ab5bbf8076bba4d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/56d54d98ebd9ccaf49dbbe80d593087863a7b88fe522b1039ab5bbf8076bba4d?s=96&d=mm&r=g\",\"caption\":\"M\u00e1rcio Alc\u00e2ntara\"},\"sameAs\":[\"http:\\\/\\\/belavista.net.br\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Socorro, meu banco de dados est\u00e1 corrompido. O que agora? - Bela Vista NET","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:\/\/belavista.net.br\/?p=29","og_locale":"pt_BR","og_type":"article","og_title":"Socorro, meu banco de dados est\u00e1 corrompido. O que agora? - Bela Vista NET","og_description":"Um banco de dados corrompido \u00e9 provavelmente um dos piores pesadelos do DBA.&nbsp;Isso resulta em tempo de inatividade, gritos de gerentes e todos os outros tipos de coisas desagrad\u00e1veis Neste artigo, vou explicar algumas das coisas que n\u00e3o devem ser feitas em um banco de dados corrompido e, em seguida, examinarei algumas das coisas que [&hellip;]","og_url":"https:\/\/belavista.net.br\/?p=29","og_site_name":"Bela Vista NET","article_published_time":"2021-01-27T14:33:41+00:00","article_modified_time":"2021-01-27T14:39:59+00:00","author":"M\u00e1rcio Alc\u00e2ntara","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"M\u00e1rcio Alc\u00e2ntara","Est. tempo de leitura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/belavista.net.br\/?p=29#article","isPartOf":{"@id":"https:\/\/belavista.net.br\/?p=29"},"author":{"name":"M\u00e1rcio Alc\u00e2ntara","@id":"https:\/\/belavista.net.br\/#\/schema\/person\/ffafd9c528cac7c249b89c41cdb674e3"},"headline":"Socorro, meu banco de dados est\u00e1 corrompido. O que agora?","datePublished":"2021-01-27T14:33:41+00:00","dateModified":"2021-01-27T14:39:59+00:00","mainEntityOfPage":{"@id":"https:\/\/belavista.net.br\/?p=29"},"wordCount":3011,"commentCount":0,"publisher":{"@id":"https:\/\/belavista.net.br\/#organization"},"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/belavista.net.br\/?p=29#respond"]}]},{"@type":"WebPage","@id":"https:\/\/belavista.net.br\/?p=29","url":"https:\/\/belavista.net.br\/?p=29","name":"Socorro, meu banco de dados est\u00e1 corrompido. O que agora? - Bela Vista NET","isPartOf":{"@id":"https:\/\/belavista.net.br\/#website"},"datePublished":"2021-01-27T14:33:41+00:00","dateModified":"2021-01-27T14:39:59+00:00","breadcrumb":{"@id":"https:\/\/belavista.net.br\/?p=29#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/belavista.net.br\/?p=29"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/belavista.net.br\/?p=29#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/belavista.net.br\/"},{"@type":"ListItem","position":2,"name":"Socorro, meu banco de dados est\u00e1 corrompido. O que agora?"}]},{"@type":"WebSite","@id":"https:\/\/belavista.net.br\/#website","url":"https:\/\/belavista.net.br\/","name":"Bela Vista Net","description":"Sistemas de Gest\u00e3o para o Varejo","publisher":{"@id":"https:\/\/belavista.net.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/belavista.net.br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/belavista.net.br\/#organization","name":"Bela Vista Net","url":"https:\/\/belavista.net.br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/belavista.net.br\/#\/schema\/logo\/image\/","url":"https:\/\/belavista.net.br\/wp-content\/uploads\/2021\/10\/logo-horizontal-site.png","contentUrl":"https:\/\/belavista.net.br\/wp-content\/uploads\/2021\/10\/logo-horizontal-site.png","width":1000,"height":180,"caption":"Bela Vista Net"},"image":{"@id":"https:\/\/belavista.net.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/belavista.net.br\/#\/schema\/person\/ffafd9c528cac7c249b89c41cdb674e3","name":"M\u00e1rcio Alc\u00e2ntara","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/56d54d98ebd9ccaf49dbbe80d593087863a7b88fe522b1039ab5bbf8076bba4d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/56d54d98ebd9ccaf49dbbe80d593087863a7b88fe522b1039ab5bbf8076bba4d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56d54d98ebd9ccaf49dbbe80d593087863a7b88fe522b1039ab5bbf8076bba4d?s=96&d=mm&r=g","caption":"M\u00e1rcio Alc\u00e2ntara"},"sameAs":["http:\/\/belavista.net.br"]}]}},"_links":{"self":[{"href":"https:\/\/belavista.net.br\/index.php?rest_route=\/wp\/v2\/posts\/29","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/belavista.net.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/belavista.net.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/belavista.net.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/belavista.net.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=29"}],"version-history":[{"count":2,"href":"https:\/\/belavista.net.br\/index.php?rest_route=\/wp\/v2\/posts\/29\/revisions"}],"predecessor-version":[{"id":33,"href":"https:\/\/belavista.net.br\/index.php?rest_route=\/wp\/v2\/posts\/29\/revisions\/33"}],"wp:attachment":[{"href":"https:\/\/belavista.net.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/belavista.net.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/belavista.net.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}