{"id":6711,"date":"2016-11-07T09:53:51","date_gmt":"2016-11-07T11:53:51","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=6711"},"modified":"2016-11-07T11:11:54","modified_gmt":"2016-11-07T13:11:54","slug":"casos-do-dia-a-dia-monitorando-o-tamanho-do-arquivo-mdf-do-tempdb-e-sua-version-store","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2016\/11\/07\/casos-do-dia-a-dia-monitorando-o-tamanho-do-arquivo-mdf-do-tempdb-e-sua-version-store\/","title":{"rendered":"Casos do Dia a Dia: Monitorando o tamanho do arquivo MDF do Tempdb e sua Version Store"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6739 alignleft\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/tempdb.png\" alt=\"tempdb\" width=\"256\" height=\"256\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/tempdb.png 256w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/tempdb-150x150.png 150w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/tempdb-100x100.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/tempdb-20x20.png 20w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/p>\n<p>Ol\u00e1 Pessoal,<\/p>\n<p>Em um dos meus clientes onde realizo um suporte e monitoramento mensal, tenho um problema de crescimento do TEMPDB que pode levar at\u00e9 a uma falta de espa\u00e7o em disco do servidor.<\/p>\n<p>Esse cliente tem habilitada na base de produ\u00e7\u00e3o a op\u00e7\u00e3o Read Committed Snapshot. Voc\u00ea pode conferir isso com a query abaixo:<\/p>\n<p>select name,is_read_committed_snapshot_on<br \/>\nfrom sys.databases<br \/>\nwhere is_read_committed_snapshot_on = 1<\/p>\n<p>Com essa op\u00e7\u00e3o habilitada na base o SQL Server mant\u00e9m um versionamento de dados no tempdb para reduzir os locks que ocorrem com consultas. As consultas v\u00e3o retornar o \u00faltimo dado commitado se algu\u00e9m tiver alterando esse dado.<\/p>\n<p>O problema acontece quando a aplica\u00e7\u00e3o abre algumas conex\u00f5es que seguram o tempdb, que usa esse versionamento, e n\u00e3o fecha adequadamente essas conex\u00f5es. Com isso, o espa\u00e7o do tempdb utilizado pela version store vira uma bola de neve e cresce sem parar.<\/p>\n<p>Enquanto o pessoal da aplica\u00e7\u00e3o n\u00e3o resolve o problema, esse alerta me ajuda a identificar quando esse problema acontece e j\u00e1 me indica as conex\u00f5es abertas a mais de uma hora para que no pr\u00f3prio e-mail eu j\u00e1 consiga identificar quais conex\u00f5es matar.<\/p>\n<p>Segue abaixo o e-mail enviado pelo Alerta:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6716\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb.jpg\" alt=\"postalertaversionstoretempdb\" width=\"1337\" height=\"536\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb.jpg 1337w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb-300x120.jpg 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb-1024x411.jpg 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb-768x308.jpg 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb-700x281.jpg 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb-410x164.jpg 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb-100x40.jpg 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb-275x110.jpg 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb-20x8.jpg 20w\" sizes=\"auto, (max-width: 1337px) 100vw, 1337px\" \/><\/p>\n<p>Nesse e-mail posso ver que o TEMPDB tem<strong> 86 GB<\/strong> de tamanho, sendo <strong>25 GB<\/strong> ainda livre e <strong>60 GB<\/strong> utilizado s\u00f3 pela parte da Version Store.<\/p>\n<p>Uma op\u00e7\u00e3o seria matar o processo automaticamente, mas ainda n\u00e3o precisei chegar nesse n\u00edvel.<\/p>\n<p>Ap\u00f3s finalizar essa conex\u00e3o que estava segurando o TEMPDB, pouco tempo depois j\u00e1 recebo o CLEAR abaixo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6715\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR.jpg\" alt=\"postalertaversionstoretempdb_clear\" width=\"1338\" height=\"337\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR.jpg 1338w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR-300x76.jpg 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR-1024x258.jpg 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR-768x193.jpg 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR-700x176.jpg 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR-410x103.jpg 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR-100x25.jpg 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR-275x69.jpg 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/PostAlertaVersionStoreTempdb_CLEAR-20x5.jpg 20w\" sizes=\"auto, (max-width: 1338px) 100vw, 1338px\" \/><\/p>\n<p>Agora podemos ver que o espa\u00e7o n\u00e3o alocado do TEMPDB voltou para <strong>85 GB<\/strong> e que a version Store agora est\u00e1 usando apenas <strong>697 MB<\/strong>.<\/p>\n<p>Segue o script para criar esse alerta: <a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/11\/stpAlerta_Tamanho_MDF_Tempdb_.txt\" target=\"_blank\">Download Script<\/a><\/p>\n<p>Esse script vai criar uma tabela chamada <em><strong>Alerta<\/strong> <\/em>para controlar o Alerta e o Clear.<\/p>\n<p>E tamb\u00e9m vai criar uma procedure chamada <em><strong>stpAlerta_Tamanho_MDF_Tempdb<\/strong><\/em> que far\u00e1 a valida\u00e7\u00e3o. Voc\u00ea deve colocar essa procedure em um job para rodar a cada 5 minutos pelo menos.<\/p>\n<p>Voc\u00ea tamb\u00e9m ter\u00e1 que fazer uma altera\u00e7\u00e3o logo no in\u00edcio da proc, colocando o seu profile e os e-mails que v\u00e3o receber os alertas separados por ponto e v\u00edrgula:<\/p>\n<p><em>&#8221;\u00a0 set @ProfileSQL = &#8216;Seu Profile&#8217;\u00a0 \u00a0\u00a0 set @Emails = &#8216;Seu Email;Outro Email&#8217;\u00a0 &#8220;<\/em><\/p>\n<p><span style=\"color: #ff0000;\">OBS:<\/span> Para quem usa o <strong>SQL Server 2008 R2<\/strong> ou inferior, voc\u00ea n\u00e3o ter\u00e1 a informa\u00e7\u00e3o de <em><strong>O<span class=\"crayon-i\">pen_transaction_Count<\/span><\/strong><\/em>, ent\u00e3o ter\u00e1 que alterar essa query abaixo no c\u00f3digo original:<\/p>\n<pre class=\"lang:tsql decode:true \">INSERT INTO #Alerta_Tamanho_MDF_Tempdb_Conexoes\r\n SELECT session_id, convert(varchar(20),login_time,120) AS login_time, login_name, host_name, 'SQL Server 2012 ou superior' open_transaction_Count, status, cpu_time,\r\n   total_elapsed_time, reads, writes, logical_reads\r\n FROM sys.dm_exec_sessions\r\n WHERE session_id &gt; 50\r\n   --and open_transaction_Count &gt; 0\r\n   and dateadd(hour,-@Tempo_Conexoes_Hs,getdate()) &gt; login_time<\/pre>\n<p>Isso n\u00e3o vai te atrapalhar a identificar o problema no tempdb, voc\u00ea s\u00f3 ter\u00e1 uma informa\u00e7\u00e3o a menos no e-mail.<\/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>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> tenho outros alertas para te ajudar no monitoramento do seu SQL Server.<\/p>\n<p>At\u00e9 a pr\u00f3xima.<\/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, Em um dos meus clientes onde realizo um suporte e monitoramento mensal, tenho um problema de crescimento do TEMPDB que pode levar at\u00e9 a uma falta de espa\u00e7o em disco do servidor. Esse cliente tem habilitada na base de produ\u00e7\u00e3o a op\u00e7\u00e3o Read Committed Snapshot. Voc\u00ea pode conferir isso com a query 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":"","jetpack_post_was_ever_published":false},"categories":[3,6,942,33,280],"tags":[1371,1372,1374,1378,1376,1380,1379,1375,287,1373,1377],"class_list":["post-6711","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-sql-server","category-virtual-pass-br","tag-alerta-sql","tag-alerta-sql-server","tag-arquivo-tempdb-grande","tag-crescimento-tempdb","tag-is_read_committed_snapshot_on","tag-monitoramento-crescimento-tempdb","tag-monitoramento-tempdb","tag-monitorar-tempdb","tag-tempdb","tag-tempdb-espaco","tag-version-store"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":13173,"url":"https:\/\/fabriciolima.net\/blog\/2020\/08\/19\/monitoramento-no-sql-server-o-que-fazer-quando-receber-um-alerta-de-crescimento-do-tempdb\/","url_meta":{"origin":6711,"position":0},"title":"Monitoramento no SQL Server &#8211; O que fazer quando receber um alerta de crescimento do Tempdb?","author":"Fabr\u00edcio Lima","date":"19 de agosto de 2020","format":false,"excerpt":"Fala Pessoal, Em Setembro de 2019 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 mais um v\u00eddeo para ajudar a responder essa pergunta: https:\/\/www.youtube.com\/watch?v=8QYBEwWSEgQ Queries utilizadas nesse post:\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\/8QYBEwWSEgQ\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":656,"url":"https:\/\/fabriciolima.net\/blog\/2011\/04\/26\/querys-do-dia-a-dia-como-encontrar-as-conexoes-que-mais-ocupam-espaco-no-tempdb\/","url_meta":{"origin":6711,"position":1},"title":"Querys do Dia a Dia: Como encontrar as conex\u00f5es que mais ocupam espa\u00e7o no Tempdb","author":"Fabr\u00edcio Lima","date":"26 de abril de 2011","format":false,"excerpt":"Fala Pessoal, Um certo dia, no meio do meu expediente normal de trabalho, recebi a notifica\u00e7\u00e3o abaixo por e-mail: T: Label:TempDB is 92 Percentage, threshold value for this monitor is 80 Percentage Estava acabando o espa\u00e7o em disco no drive T: onde o Tempdb est\u00e1 armazenado em um dos\u00a0 meus\u2026","rel":"","context":"Em &quot;Querys do Dia a Dia&quot;","block_context":{"text":"Querys do Dia a Dia","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/querys-do-dia-a-dia\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7833,"url":"https:\/\/fabriciolima.net\/blog\/2017\/05\/23\/migrando-um-sql-server-2008-totvs-protheus-para-o-sql-server-2016-standard\/","url_meta":{"origin":6711,"position":2},"title":"Migrando um SQL Server 2008 Totvs Protheus para o SQL Server 2016 Standard","author":"Fabr\u00edcio Lima","date":"23 de maio de 2017","format":false,"excerpt":"Fala Pessoal, Hoje vou compartilhar com voc\u00eas sobre uma migra\u00e7\u00e3o que fiz em um cliente no in\u00edcio do m\u00eas. Cen\u00e1rio Antigo: Windows Server 2008 SQL Server 2008 R2 Standard Servidor \u00fanico (migra\u00e7\u00e3o para o mesmo Hardware) Novo Cen\u00e1rio: Windows Server 2012 R2 SQL Server 2016 Standard Edition Como n\u00e3o t\u00ednhamos\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\/05\/sql2016Totvs.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":7206,"url":"https:\/\/fabriciolima.net\/blog\/2017\/01\/19\/alerta-monitorando-o-status-das-bases-de-dados-no-sql-server\/","url_meta":{"origin":6711,"position":3},"title":"Alerta: Monitorando o Status das Bases de Dados no SQL Server","author":"Fabr\u00edcio Lima","date":"19 de janeiro de 2017","format":false,"excerpt":"Ol\u00e1 Pessoal, Hoje vou compartilhar com voc\u00eas o script de cria\u00e7\u00e3o de mais um alerta para nos ajudar na Administra\u00e7\u00e3o do nosso SQL Server. Esse alerta \u00e9 um pouco mais simples. Ele vai monitorar o Status das nossas bases de dados. Caso alguma base fique com o Status diferente de\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\/01\/AlertaBaseONLINE.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaBaseONLINE.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/01\/AlertaBaseONLINE.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1377,"url":"https:\/\/fabriciolima.net\/blog\/2012\/03\/29\/simulado-para-a-prova-70-432-parte-10\/","url_meta":{"origin":6711,"position":4},"title":"Simulado para a prova 70-432 \u2013 Parte 10","author":"Fabr\u00edcio Lima","date":"29 de mar\u00e7o de 2012","format":false,"excerpt":"Fala Pessoal, Segue mais um simulado com 5 quest\u00f5es para a Prova 70-432 - Microsoft SQL Server 2008 - Implementation and Maintenance. Nesse simulado, coloquei algumas alternativas a mais para dificultar a vida de voc\u00eas. \u00a0 1) A database TempDB tamb\u00e9m \u00e9 utilizada para version store (Opera\u00e7\u00f5es ONLINE, Snapshot Isolation\u2026","rel":"","context":"Em &quot;Certifica\u00e7\u00e3o SQL Server&quot;","block_context":{"text":"Certifica\u00e7\u00e3o SQL Server","link":"https:\/\/fabriciolima.net\/blog\/category\/certificacao-2\/certificacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2185,"url":"https:\/\/fabriciolima.net\/blog\/2013\/04\/12\/dica-de-leitura-the-sql-server-instance-that-will-not-start\/","url_meta":{"origin":6711,"position":5},"title":"Dica de Leitura &#8211; The SQL Server Instance That Will not Start","author":"Fabr\u00edcio Lima","date":"12 de abril de 2013","format":false,"excerpt":"Ol\u00e1 Pessoal, Passando rapidamente para deixar uma dica de leitura de um artigo publicado no Simple Talk pela Gail Shaw. Um dos piores momentos na vida de um DBA \u00e9 quando o servi\u00e7o do SQL Server de um servidor cr\u00edtico e sem redund\u00e2ncia (por falta de recursos $$) para de\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\/6711","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=6711"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/6711\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=6711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=6711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=6711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}