{"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":"","jetpack_post_was_ever_published":false},"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"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":11647,"url":"https:\/\/fabriciolima.net\/blog\/2020\/02\/29\/monitoramento-no-sql-server-o-que-fazer-quando-receber-um-alerta-de-log-full\/","url_meta":{"origin":6981,"position":0},"title":"Monitoramento no SQL Server &#8211; O que fazer quando receber um alerta de Log FULL?","author":"Fabr\u00edcio Lima","date":"29 de fevereiro de 2020","format":false,"excerpt":"Fala Pessoal, Em Setembro do ano passado liberei uma nova vers\u00e3o dos meus scripts para a cria\u00e7\u00e3o de 40 alertas no SQL Server: https:\/\/www.fabriciolima.net\/blog\/2019\/09\/22\/passo-a-passo-de-como-criar-40-alertas-para-monitorar-seu-sql-server\/ Legal Fabr\u00edcio, mas o que eu fa\u00e7o quando receber esses Alertas? Esse \u00e9 o segundo v\u00eddeo para ajudar a dar essa resposta para voc\u00eas. Nesse v\u00eddeo\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\/img.youtube.com\/vi\/T3C11DLqyus\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":7653,"url":"https:\/\/fabriciolima.net\/blog\/2017\/04\/03\/video-qual-a-diferenca-entre-o-recovery-model-simple-e-o-recovery-model-full\/","url_meta":{"origin":6981,"position":1},"title":"V\u00eddeo: Qual a diferen\u00e7a entre o Recovery Model SIMPLE e o Recovery Model FULL?","author":"Fabr\u00edcio Lima","date":"3 de abril de 2017","format":false,"excerpt":"Fala Pessoal, O objetivo do v\u00eddeo de hoje \u00e9\u00a0mostrar a diferen\u00e7a entre o recovery SIMPLE e o recovery FULL. Essa \u00e9 uma das d\u00favidas mais comuns\u00a0que vejo nos f\u00f3runs, palestras e treinamentos. Principalmente para quem est\u00e1 come\u00e7ando no mundo SQL Server. Segue o v\u00eddeo com a explica\u00e7\u00e3o: https:\/\/www.youtube.com\/watch?v=cXQvhTKOE8o Segue o\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\/2017\/04\/RecoverySimpleFull-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/04\/RecoverySimpleFull-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/04\/RecoverySimpleFull-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":3200,"url":"https:\/\/fabriciolima.net\/blog\/2015\/01\/15\/casos-do-dia-a-dia-transaction-log-nao-diminui-nivel-hard\/","url_meta":{"origin":6981,"position":2},"title":"Casos do Dia a Dia: Transaction Log n\u00e3o diminui &#8211; N\u00edvel Hard","author":"Fabr\u00edcio Lima","date":"15 de janeiro de 2015","format":false,"excerpt":"Ol\u00e1 Pessoal, Recebi um alerta de LOG FULL em um dos clientes que realizo um monitoramento di\u00e1rio do BD com minha Consultoria SQL Server. At\u00e9 a\u00ed, nada de mais. Seria um atendimento de rotina onde provavelmente o Log n\u00e3o era limpo devido a algum problema no Backup de Log ou\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\/01\/ArtigoVLF.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":9187,"url":"https:\/\/fabriciolima.net\/blog\/2018\/07\/17\/azure-sql-database-quanto-posso-usar-de-transaction-log-e-ilimitado\/","url_meta":{"origin":6981,"position":3},"title":"Azure SQL Database &#8211; Quanto posso usar de Transaction Log? \u00c9 ilimitado?","author":"Fabr\u00edcio Lima","date":"17 de julho de 2018","format":false,"excerpt":"Fala Pessoal, Continuando os posts sobre Azure SQL Database, dessa vez vamos falar sobre um erro de Log Full que consegui gerar em uma base no Azure. O Transaction Log de uma base no azure funciona da mesma forma que em uma inst\u00e2ncia On-Premise. Como no azure n\u00e3o conseguimos utilizar\u2026","rel":"","context":"Em &quot;Azure SQL Database&quot;","block_context":{"text":"Azure SQL Database","link":"https:\/\/fabriciolima.net\/blog\/category\/azure-sql-database\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/07\/AzureSQLDatabaseFotoE03.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/07\/AzureSQLDatabaseFotoE03.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/07\/AzureSQLDatabaseFotoE03.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":2836,"url":"https:\/\/fabriciolima.net\/blog\/2014\/03\/06\/o-transaction-log-de-uma-transacao-e-liberado-quando-dou-um-rollback\/","url_meta":{"origin":6981,"position":4},"title":"O Transaction Log de uma transa\u00e7\u00e3o \u00e9 liberado quando dou um rollback?","author":"Fabr\u00edcio Lima","date":"6 de mar\u00e7o de 2014","format":false,"excerpt":"Ol\u00e1 Pessoal, Imagina que voc\u00ea executa um update em milh\u00f5es de linhas no seu banco de dados (com BEGIN TRAN) e v\u00ea o Log crescer v\u00e1rios GBs. Ao concluir a transa\u00e7\u00e3o, voc\u00ea verifica que fez coisa errada e decide dar um rollback. Todo esse log que foi armazenado ser\u00e1 liberado?\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\/ResultTestesLog.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":194,"url":"https:\/\/fabriciolima.net\/blog\/2010\/12\/19\/casos-do-dia-a-dia-voce-sabia-que-um-arquivo-de-log-do-sql-server-se-fragmenta\/","url_meta":{"origin":6981,"position":5},"title":"Casos do Dia a Dia &#8211; Voc\u00ea sabia que um arquivo de Log do SQL Server se fragmenta?","author":"Fabr\u00edcio Lima","date":"19 de dezembro de 2010","format":false,"excerpt":"Fala Pessoal, Vou ser sincero com voc\u00eas, at\u00e9 pouco tempo eu n\u00e3o tinha a menor id\u00e9ia que um arquivo de log do SQL Server se fragmentava. Nunca tinha lido\u00a0sobre o assunto. Entretanto, para isso que servem os mais 100 Blogs de SQL Server cadastrados no meu google reader e os\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\/2010\/12\/dbcc-loginfo.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"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}]}}