{"id":3714,"date":"2015-12-17T14:45:13","date_gmt":"2015-12-17T16:45:13","guid":{"rendered":"http:\/\/www.fabriciolima.net\/blog\/?p=3714"},"modified":"2016-07-23T22:20:54","modified_gmt":"2016-07-24T01:20:54","slug":"corrupcao-de-dados-incorrect-pfs-free-space-information","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2015\/12\/17\/corrupcao-de-dados-incorrect-pfs-free-space-information\/","title":{"rendered":"Corrup\u00e7\u00e3o de Dados: Incorrect PFS free space information"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Essa semana iniciei mais uma <a href=\"https:\/\/www.fabriciolima.net\/blog\/consultoria-remota\/\" target=\"_blank\">Consultoria Remota<\/a> em um cliente e uma das atividades mais importante desse servi\u00e7o \u00e9 criar uma rotina para validar diariamente se existe corrup\u00e7\u00e3o nos bancos. Na grande maioria das vezes o banco est\u00e1 abandonado e n\u00e3o tem uma rotina dessa.<\/p>\n<p>Ao executar essa valida\u00e7\u00e3o, peguei o erro abaixo em uma das bases de dados:<\/p>\n<p><span style=\"color: #ff0000;\">Executed as user: XXXX. Incorrect PFS free space information for page (1:9434) in object ID 1458104235, <\/span><br \/>\n<span style=\"color: #ff0000;\">index ID 0, partition ID 72057594051100672, alloc unit ID 72057594055229440 (type In-row data). <\/span><br \/>\n<span style=\"color: #ff0000;\">Expected value 80_PCT_FULL, actual value 50_PCT_FULL. [SQLSTATE 42000] (Error 8914)<\/span><\/p>\n<p><span style=\"color: #ff0000;\">CHECKDB found 0 allocation errors and 1 consistency errors in table &#8216;XXXX&#8217;\u00a0<\/span><\/p>\n<p><span style=\"color: #ff0000;\">CHECKDB found 0 allocation errors and 1 consistency errors in database &#8216;XXXX&#8217;<\/span><\/p>\n<p><span style=\"color: #ff0000;\">repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB<\/span><\/p>\n<p>__________<\/p>\n<p>Antes de sair executando\u00a0repair_allow_data_loss, dei uma pesquisada sobre o erro.<\/p>\n<p>Esse erro n\u00e3o \u00e9 exatamente de dados corrompidos. Segundo meu amigo <a href=\"https:\/\/social.msdn.microsoft.com\/Forums\/sqlserver\/en-US\/e34bbbab-6413-4377-9bcb-29abb9af543d\/dbcc-checkdb-errors?forum=sqldisasterrecovery\" target=\"_blank\">Paul Randal<\/a>, isso quer dizer que a informa\u00e7\u00e3o dessa p\u00e1gina (1:9434), na <strong>PFS (Page Free Space)<\/strong>, \u00a0est\u00e1 com um valor errado para a quantidade de espa\u00e7o livre que ela tem. Essa p\u00e1gina tem 50% de espa\u00e7o livre ao inv\u00e9s dos 80% informado na PFS.<\/p>\n<p>O Repair iria apenas corrigir essa configura\u00e7\u00e3o de espa\u00e7o livre, mas teria que deixar a base em single user mode (offline).<\/p>\n<p>Isso normalmente ocorre com bases que s\u00e3o migradas do SQL 2000, onde existiam alguns bugs no algoritmo que gerava essa informa\u00e7\u00e3o.<\/p>\n<p>Olhando o erro \u00e9 poss\u00edvel ver que ele estava afetando uma tabela:<\/p>\n<p><span style=\"color: #ff0000;\">CHECKDB found 0 allocation errors and 1 consistency errors in table &#8216;XXXX&#8217;\u00a0<\/span><\/p>\n<p>Como eu n\u00e3o queria deixar a base OFFLINE, pois a tabela com problema era bem pequena, fiz os procedimentos abaixo:<\/p>\n<p>1) Gerei o script dessa tabela e criei com outro nome (lembre de manter \u00edndices, identity e constraints)<\/p>\n<p>2) Migrei os dados da tabela com erro para a nova tabela<\/p>\n<p>3) Exclu\u00ed a tabela que estava dando erro<\/p>\n<p><strong><span style=\"color: #008000;\">Feito isso, o CHECKDB executou novamente sem nenhum problema.<\/span><\/strong><\/p>\n<p>Mais um caso de erro no CHECKDB para contar aos netos. E eles est\u00e3o ficando bem constantes nesse meu trabalho de consultor SQL Server.<\/p>\n<p>At\u00e9 o pr\u00f3ximo erro.<\/p>\n<p><b>Gostou desse Post?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, Essa semana iniciei mais uma Consultoria Remota em um cliente e uma das atividades mais importante desse servi\u00e7o \u00e9 criar uma rotina para validar diariamente se existe corrup\u00e7\u00e3o nos bancos. Na grande maioria das vezes o banco est\u00e1 abandonado e n\u00e3o tem uma rotina dessa. Ao executar essa valida\u00e7\u00e3o, peguei o erro abaixo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[3,6,942,373,991,33,280],"tags":[1205,1151,1210,1179,954,1012,1011,1220,1216,1219,1208,942,1114,373,1206,422,250,23,24,1215,1218,1222,1214,1217,1154,1204,1213,1203,1153,1212,1209,1211,1152,1207,1150,33,385,1221],"class_list":["post-3714","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-corrupcao-de-dados","category-dba-remoto","category-sql-server","category-virtual-pass-br","tag-actual-value","tag-alertas-banco-de-dados","tag-allocation-error","tag-attach","tag-backup","tag-base-corrompida","tag-checkdb","tag-checkdb-error","tag-checkdb-found-allocation-errors","tag-checkdb-repair","tag-consistence-error","tag-consultoria-sql-server","tag-corrupcao","tag-corrupcao-de-dados","tag-corrupcao-sql-server","tag-corruption","tag-database-corruption","tag-dba","tag-dbcc-checkdb","tag-dbcc-checkdb-consistency-errors","tag-dbcc-checkdb-example","tag-dbcc-checkdb-repair_fast","tag-dbcc-checkdb-repair_rebuild","tag-dbcc-checkdb-with-no_infomsgs-dbcc-checkdb-repair_allow_data_loss","tag-especialista-banco-de-dados","tag-expected-value-80_pct_full","tag-how-to-fix-dbcc-checkdb-errors","tag-incorrect-pfs-free-space-information","tag-problema-sql-server","tag-repair-checkdb","tag-repair-database","tag-repair-dbcc","tag-repair_allow_data_loss","tag-repair_rebuild","tag-restore","tag-sql-server","tag-suspect_pages","tag-what-does-dbcc-checkdb-do"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=3714"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3714\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=3714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=3714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=3714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}