{"id":959,"date":"2011-09-07T12:17:20","date_gmt":"2011-09-07T14:17:20","guid":{"rendered":"http:\/\/fabriciolima.net\/blog\/?p=959"},"modified":"2016-07-23T23:25:43","modified_gmt":"2016-07-24T02:25:43","slug":"querys-do-dia-a-dia-monitoramento-do-status-das-databases-e-de-paginas-corrompidas","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2011\/09\/07\/querys-do-dia-a-dia-monitoramento-do-status-das-databases-e-de-paginas-corrompidas\/","title":{"rendered":"Querys do Dia a Dia: Monitoramento do Status das Databases e de P\u00e1ginas Corrompidas"},"content":{"rendered":"<p>Fala Pessoal,<\/p>\n<p>Depois de ter algumas p\u00e1ginas corrompidas e uma database em modo Suspect (<a href=\"https:\/\/www.fabriciolima.net\/blog\/2011\/08\/15\/casos-do-dia-a-dia-corrupcao-de-dados-e-database-suspect\/\" target=\"_blank\">Casos do Dia a Dia: Corrup\u00e7\u00e3o de Dados e Database Suspect<\/a>), resolvi criar uma procedure que realiza um monitoramento desse tipo de problema a cada\u00a01 minuto e me envia um e-mail e um torpedo em caso de algum problema.<\/p>\n<p>No meu ambiente temos um servi\u00e7o que envia torpedos atrav\u00e9s da VIVO . Ent\u00e3o basta dar um insert em uma tabela para receber um torpedo de trabalho no seu celular(deixei essa parte comentada no c\u00f3digo). Os de madrugadas s\u00e3o os mais legais!!! =\/<\/p>\n<p>Voc\u00ea pode n\u00e3o conseguir enviar um torpedo no seu ambiente, mas um e-mail voc\u00ea consegue. Ent\u00e3o para rodar a procedure abaixo voc\u00ea deve configurar o seu Database Mail.<\/p>\n<p>Segue o c\u00f3digo da procedure:<\/p>\n<p>Create procedure stpVerifica_Erro_Banco_Dados<br \/>\nAS<br \/>\ndeclare @subject varchar(500)<\/p>\n<p>if exists (select null from msdb..Suspect_pages where last_update_date &gt;=\u00a0dateadd(mi,-3,getdate()))<br \/>\nbegin<br \/>\nset @subject = &#8216;Existe um p\u00e1gina corrompida no Banco de Dados.&#8217;<br \/>\nEXEC msdb.dbo.sp_send_dbmail<br \/>\n@profile_name = &#8216;SeuProfile&#8217;,<br \/>\n@recipients = &#8216;Seu E-Mail&#8217;,<br \/>\n@query = &#8216;select *<br \/>\nfrom msdb..Suspect_pages&#8217;,<br \/>\n@Subject = @subject;<\/p>\n<p>&#8212; exec stpEnvia_Torpedo @subject<br \/>\nend<\/p>\n<p>if\u00a0 exists (select null from sys.databases where state_desc not in (&#8216;ONLINE&#8217;,&#8217;RESTORING&#8217;))<br \/>\nbegin<br \/>\nset @subject = &#8216;Existe uma database que n\u00e3o est\u00e1 ONLINE no SQL Server. &#8216;<\/p>\n<p>EXEC msdb.dbo.sp_send_dbmail<br \/>\n@profile_name = &#8216;SeuProfile&#8217;,<br \/>\n@recipients = &#8216;Seu E-Mail&#8217;,<br \/>\n@query = &#8216;\u00a0\u00a0 \u00a0select name, state_desc<br \/>\nfrom sys.databases<br \/>\nwhere state_desc NOT IN (&#8221;ONLINE&#8221;,&#8221;RESTORING&#8221;)&#8217;,<br \/>\n@Subject = @subject;<\/p>\n<p>&#8212; exec stpEnvia_Torpedo @subject<br \/>\nend<\/p>\n<p>Como eu tenho servidores que recebem v\u00e1rios restores,\u00a0eliminei a notifica\u00e7\u00e3o para esse caso. Agora basta agendar um job que chame essa procedure e torcer para n\u00e3o receber nenhum torpedo ou e-mail.<\/p>\n<p>Outros tipos de verifica\u00e7\u00f5es podem ser inclu\u00eddas nessa procedure te alertando com mensagens ou querys programadas\u00a0do jeito que voc\u00ea queira visualizar.<\/p>\n<p>Isso tamb\u00e9m poderia ser feito via os Alerts do SQL Server e essa semana o Laerte Junior(<a href=\"http:\/\/twitter.com\/#!\/LaerteSQLDBA\" target=\"_blank\">Twitter<\/a>|<a href=\"http:\/\/shellyourexperience.wordpress.com\" target=\"_blank\">Blog<\/a>) fez um post utilizando o PowerShell para monitorar a tabela Suspect_Pages: <a href=\"http:\/\/shellyourexperience.wordpress.com\/2011\/09\/05\/powershell-and-sql-server-eventsmonitoring-database-suspect-data-page\/\" target=\"_blank\">PowerShell and SQL Server Events\u2013Monitoring DATABASE SUSPECT DATA\u00a0PAGE<\/a> .\u00a0<\/p>\n<p><b>Gostou dessa dica?<\/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>Aprenda a criar essa e outras rotinas para administrar melhor seu SQL Server no meu <a href=\"https:\/\/www.fabriciolima.net\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\">Treinamento de Tarefas do Dia a Dia de um DBA<\/a>.<\/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>Fala Pessoal, Depois de ter algumas p\u00e1ginas corrompidas e uma database em modo Suspect (Casos do Dia a Dia: Corrup\u00e7\u00e3o de Dados e Database Suspect), resolvi criar uma procedure que realiza um monitoramento desse tipo de problema a cada\u00a01 minuto e me envia um e-mail e um torpedo em caso de algum problema. No meu [&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":"","jetpack_post_was_ever_published":false},"categories":[3,13,280],"tags":[69,426,423,422,250,425,21,23,24,27,424,33,38,385],"class_list":["post-959","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-querys-do-dia-a-dia","category-virtual-pass-br","tag-administracao-de-banco-de-dados","tag-banco-de-dados-suspect","tag-corrupcao-no-banco-de-dados","tag-corruption","tag-database-corruption","tag-database-status","tag-database-suspect","tag-dba","tag-dbcc-checkdb","tag-internals","tag-page-corruption","tag-sql-server","tag-suspect","tag-suspect_pages"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":942,"url":"https:\/\/fabriciolima.net\/blog\/2011\/08\/15\/casos-do-dia-a-dia-corrupcao-de-dados-e-database-suspect\/","url_meta":{"origin":959,"position":0},"title":"Casos do Dia a Dia: Corrup\u00e7\u00e3o de Dados e Database Suspect","author":"Fabr\u00edcio Lima","date":"15 de agosto de 2011","format":false,"excerpt":"Fala Pessoal, Gostaria de fazer deste post como se fosse uma thread de um f\u00f3rum com uma discus\u00e3o sobre alta disponibilidade no SQL Server. S\u00e1bado, dia 13\/08 eu tive um problema em uma database que deixa qualquer DBA com o cora\u00e7\u00e3o disparado(DBA n\u00e3o pode ter problema card\u00edaco!!!). Uma database de\u2026","rel":"","context":"Em &quot;Casos do Dia a Dia&quot;","block_context":{"text":"Casos do Dia a Dia","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/casos-do-dia-a-dia\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":77,"url":"https:\/\/fabriciolima.net\/blog\/2010\/10\/08\/casos-do-dia-a-dia-database-em-modo-suspect\/","url_meta":{"origin":959,"position":1},"title":"Casos do Dia a Dia: Database em modo Suspect","author":"Fabr\u00edcio Lima","date":"8 de outubro de 2010","format":false,"excerpt":"Gostaria de compartilhar com voc\u00eas uma experi\u00eancia que tive no ambiente de banco de dados que administro. Realizando um boot em um dos meus servidores SQL Server devido as atualiza\u00e7\u00f5es de seguran\u00e7a do windows, uma de minhas databases subiu em modo Suspect. Como essa database \u00e9 restaurada diariamente do servidor\u2026","rel":"","context":"Em &quot;Casos do Dia a Dia&quot;","block_context":{"text":"Casos do Dia a Dia","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/casos-do-dia-a-dia\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2858,"url":"https:\/\/fabriciolima.net\/blog\/2014\/03\/10\/como-descobrir-a-pagina-fisica-dos-registros-de-uma-tabela-com-apenas-um-select\/","url_meta":{"origin":959,"position":2},"title":"Como descobrir a p\u00e1gina f\u00edsica dos registros de uma tabela com apenas um SELECT","author":"Fabr\u00edcio Lima","date":"10 de mar\u00e7o de 2014","format":false,"excerpt":"Ol\u00e1 Pessoal, Continuando os cursos do Paul Randal na PluralSight, muitas ideias de posts v\u00e3o surgindo e com o tempo permitindo, colocarei aqui no Blog. Hoje vou falar de duas fun\u00e7\u00f5es n\u00e3o documentadas que nunca tinha ouvido falar:\u00a0%%PHYSLOC%% e\u00a0fn_PhysLocCracker. Criei uma tabela e populei com mil registros para a realiza\u00e7\u00e3o\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2014\/03\/PHYSLOC.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2534,"url":"https:\/\/fabriciolima.net\/blog\/2013\/12\/11\/casos-do-dia-a-dia-databases-em-modo-suspect-e-pendente-recovery\/","url_meta":{"origin":959,"position":3},"title":"Casos do Dia a Dia &#8211; Databases em modo Suspect e Pendente Recovery","author":"Fabr\u00edcio Lima","date":"11 de dezembro de 2013","format":false,"excerpt":"Ol\u00e1 Pessoal, Compartilhando mais uma experi\u00eancia do meu Dia a Dia com voc\u00eas (fazia tempo que n\u00e3o fazia um post assim), tive um problema em um servidor onde o servi\u00e7o do SQL Server foi iniciado sem que a LUN onde estavam as bases de usu\u00e1rios tivesse dispon\u00edvel para utiliza\u00e7\u00e3o. Pouco\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3305,"url":"https:\/\/fabriciolima.net\/blog\/2015\/03\/11\/casos-do-dia-a-dia-mais-um-caso-real-de-perdas-de-dados-em-uma-empresa\/","url_meta":{"origin":959,"position":4},"title":"Casos do Dia a Dia: Mais um caso real de perdas de dados em uma Empresa","author":"Fabr\u00edcio Lima","date":"11 de mar\u00e7o de 2015","format":false,"excerpt":"Ol\u00e1 Pessoal, Um cliente me procurou dizendo que precisava muito da minha ajuda pois estava com um problema grave no SQL Server. Ele teve um problema com o servidor e s\u00f3 conseguiu salvar os arquivos .mdf e .ldf da base de dados. Contudo, ao tentar dar um attach nesses arquivos,\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2015\/03\/Attach.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3714,"url":"https:\/\/fabriciolima.net\/blog\/2015\/12\/17\/corrupcao-de-dados-incorrect-pfs-free-space-information\/","url_meta":{"origin":959,"position":5},"title":"Corrup\u00e7\u00e3o de Dados: Incorrect PFS free space information","author":"Fabr\u00edcio Lima","date":"17 de dezembro de 2015","format":false,"excerpt":"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\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/959","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=959"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/959\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}