{"id":6981,"date":"2017-01-12T11:38:38","date_gmt":"2017-01-12T13:38:38","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=6981"},"modified":"2017-02-02T20:27:09","modified_gmt":"2017-02-02T22:27:09","slug":"alerta-monitorando-o-tamanho-do-transaction-log-no-sql-server","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2017\/01\/12\/alerta-monitorando-o-tamanho-do-transaction-log-no-sql-server\/","title":{"rendered":"Alerta: Monitorando o tamanho do Transaction Log no SQL Server"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Hoje vou compartilhar com voc\u00eas um script pronto para voc\u00ea monitorar o Transaction Log do seu SQL Server.<\/p>\n<p><strong>Cen\u00e1rio real do Dia a Dia:<\/strong><\/p>\n<p>J\u00e1 perdi as contas de quantos clientes j\u00e1 me procuraram com uma base de dados parada e com uma mensagem de <span style=\"color: #ff0000;\">Transaction Log FULL<\/span>.<\/p>\n<p>Por default, o recovery model das bases do SQL Server \u00e9 FULL. Isso significa que ele vai manter todas as opera\u00e7\u00f5es de insert\/update\/delete no seu transaction log at\u00e9 que voc\u00ea realize um <strong>backup de log<\/strong>, o que muitas vezes o cliente n\u00e3o faz (o cliente s\u00f3 roda um backup FULL).<\/p>\n<p>O log vai crescendo at\u00e9 acabar o espa\u00e7o em disco, e quando isso acontece, a base de dados para.<\/p>\n<p><strong>Outros cen\u00e1rios do Dia a Dia:<\/strong><\/p>\n<p>Algu\u00e9m realiza um update\/delete gigante e o log cresce muito.<\/p>\n<p>Algu\u00e9m deixa uma transa\u00e7\u00e3o aberta por muito tempo e o log cresce muito.<\/p>\n<p>\u00c9 realizado a desfragmenta\u00e7\u00e3o de todos os \u00edndices e o log cresce muito.<\/p>\n<p><strong>Seja proativo!<\/strong><\/p>\n<p>Para evitar que seu banco de dados pare devido a um LOG FULL, o m\u00ednimo que voc\u00ea tem que fazer \u00e9 monitorar a utiliza\u00e7\u00e3o desse arquivo de log. Quando seu arquivo de log passar de 85% de utiliza\u00e7\u00e3o, voc\u00ea receber\u00e1 um e-mail e j\u00e1 vai validar o que est\u00e1 enchendo o Log para resolver antes que um problema mais grave aconte\u00e7a.<\/p>\n<p><strong>Segue abaixo o e-mail que ser\u00e1 enviado pelo ALERTA:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7019 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL.png\" alt=\"alertalogfull\" width=\"780\" height=\"332\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL.png 1514w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL-300x128.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL-1024x436.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL-768x327.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL-700x298.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL-410x174.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL-100x43.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL-275x117.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaLogFULL-20x9.png 20w\" sizes=\"auto, (max-width: 780px) 100vw, 780px\" \/><\/p>\n<p>Na primeira parte temos a base, o tamanho atual do log e o % de utiliza\u00e7\u00e3o desse arquivo.<\/p>\n<p>Na segunda parte temos quais as queries que estavam rodando no servidor no momento do alerta. Com isso voc\u00ea pode ter uma ideia de quem \u00e9 o culpado do log ter passado de 85% de utiliza\u00e7\u00e3o.<\/p>\n<p>Nesse caso do exemplo tinham dois desenvolvedores rodando uma query no server (exemplo meramente ilustrativo).<\/p>\n<p>Massa demais!!!<\/p>\n<p><strong>Segue abaixo o e-mail que ser\u00e1 enviado quando ocorrer o CLEAR:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7018 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull.png\" alt=\"clearlogfull\" width=\"650\" height=\"210\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull.png 1496w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull-300x97.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull-1024x331.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull-768x248.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull-700x226.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull-410x132.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull-100x32.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull-275x89.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/ClearLogFull-20x6.png 20w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/p>\n<p><strong>Como crio esse alerta?<\/strong><\/p>\n<p><strong>Pr\u00e9-requisitos:<\/strong><\/p>\n<ul>\n<li>Configurar o envio de e-mail do SQL Server (claro). Segue um <a href=\"http:\/\/blogs.msdn.com\/b\/suhde\/archive\/2009\/07\/12\/how-to-configure-sql-server-database-mail-to-send-email-using-your-windows-live-mail-account-or-your-gmail-account.aspx\" target=\"_blank\"><b>link<\/b><\/a> como refer\u00eancia.<\/li>\n<li>Criar a a procedure <b>&#8220;sp_WhoIsActive&#8221;<\/b> do <b>Adam Machanic<\/b>, segue o <a href=\"http:\/\/whoisactive.com\/\" target=\"_blank\"><b>link<\/b><\/a>. Usamos ela no alerta.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Segue o script para criar esse alerta: <a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/Script_alerta_Log_Full.txt\" target=\"_blank\"><b>Download Script<\/b><\/a><\/p>\n<p>Esse script vai criar uma tabela chamada <em><strong>Alerta<\/strong> <\/em>para controlar o ALERTA\u00a0e o CLEAR.<\/p>\n<p>E tamb\u00e9m vai criar uma procedure chamada\u00a0<em><strong>stpAlerta_Log_Full<\/strong><\/em> que far\u00e1 a valida\u00e7\u00e3o. Voc\u00ea deve colocar essa procedure em um job para rodar a cada 1 minuto (dever de casa).<\/p>\n<p>No in\u00edcio do script tem uma documenta\u00e7\u00e3o dizendo que voc\u00ea precisa alterar o Profile e o E-mail de envio do Alerta.<\/p>\n<p>Voc\u00ea pode configurar os par\u00e2metros da melhor maneira que for atender ao seu ambiente:<\/p>\n<pre class=\"lang:tsql decode:true\">-- Seta as variaveis\r\nSELECT\t@LOG = 85,\t\t\t\t\t-- 85 %\r\n\t@Tamanho_Minimo_Alerta_log = 100000\t\t-- 100 MB\r\n<\/pre>\n<p>Eu monitoro quando o log passa de 85% e s\u00f3 monitoro bases que tem o arquivo de log maior que 100 MB. Bases que tem um log menor que isso, deixo eles crescerem at\u00e9 atingir esse tamanho (normalmente n\u00e3o s\u00e3o cr\u00edticas).<\/p>\n<p>Para verificar o tamanho e a utiliza\u00e7\u00e3o atual dos arquivos de log, basta executar o script abaixo:<\/p>\n<pre class=\"lang:tsql decode:true\">DBCC SQLPERF(LOGSPACE)<\/pre>\n<p>Em todos os meus clientes onde realizo um suporte e monitoramento mensal eu crio esse alerta para me ajudar na administra\u00e7\u00e3o do ambiente.<\/p>\n<p>&nbsp;<\/p>\n<p><b>Gostou dessa Dica?<\/b><\/p>\n<p>Curta, comente, compartilhe\u2026<\/p>\n<p>Assine meu canal no <a href=\"https:\/\/www.youtube.com\/channel\/UCeBRAO_LLrUdSrOXIywjzRA\" target=\"_blank\">Youtube<\/a> e curta minha p\u00e1gina no <a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"nofollow external noopener noreferrer\" data-wpel-link=\"external\">Facebook<\/a> para receber Dicas de Leituras, V\u00eddeos e Eventos sobre SQL Server.<\/p>\n<p>Veja esse e outros Alertas no meu\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.fabriciolima.net\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\" rel=\"nofollow external noopener noreferrer\" data-wpel-link=\"external\">Treinamento de Tarefas do Dia a Dia de um DBA<\/a>.<\/p>\n<p>At\u00e9 a pr\u00f3xima.<\/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, Hoje vou compartilhar com voc\u00eas um script pronto para voc\u00ea monitorar o Transaction Log do seu SQL Server. Cen\u00e1rio real do Dia a Dia: J\u00e1 perdi as contas de quantos clientes j\u00e1 me procuraram com uma base de dados parada e com uma mensagem de Transaction Log FULL. Por default, o recovery model [&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,942,991,33,280],"tags":[1260,1411,1372,1408,1409,1104,1262,1410,33,1105,1412],"class_list":["post-6981","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-consultoria-sql-server","category-dba-remoto","category-sql-server","category-virtual-pass-br","tag-alerta","tag-alerta-crescimento-log","tag-alerta-sql-server","tag-log-cheio-sql-server","tag-log-ful-sql-server","tag-log-full","tag-monitoramento-sql-server","tag-problema-arquivo-de-log","tag-sql-server","tag-transaction-log-full","tag-transaction-log-sql-server"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/6981","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=6981"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/6981\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=6981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=6981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=6981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}