{"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":""},"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"],"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}]}}