{"id":1217,"date":"2012-02-09T07:28:53","date_gmt":"2012-02-09T09:28:53","guid":{"rendered":"http:\/\/fabriciolima.net\/blog\/?p=1217"},"modified":"2016-07-24T09:49:09","modified_gmt":"2016-07-24T12:49:09","slug":"horario-de-verao-x-sql-server","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2012\/02\/09\/horario-de-verao-x-sql-server\/","title":{"rendered":"Hor\u00e1rio de Ver\u00e3o x SQL Server"},"content":{"rendered":"<p>Fala Pessoal,<\/p>\n<p>O que voc\u00eas fazem com seus jobs do SQL Server no inicio e no fim do hor\u00e1rio de ver\u00e3o?<\/p>\n<p>Essa semana eu fiz alguns um teste de homologa\u00e7\u00e3o em uma VM para comprovar o que exatamente acontece com os Jobs do SQL Server.<\/p>\n<p>A regra do hor\u00e1rio de ver\u00e3o \u00e9 a seguinte:<\/p>\n<p><em>Art. 1<span style=\"text-decoration: underline;\"><sup>o<\/sup><\/span> Fica institu\u00edda a hora de ver\u00e3o, a partir de zero hora do terceiro domingo do m\u00eas de outubro de cada ano, at\u00e9 zero hora do terceiro domingo do m\u00eas de fevereiro do ano subseq\u00fcente, em parte do territ\u00f3rio nacional, adiantada em sessenta minutos em rela\u00e7\u00e3o \u00e0 hora legal.<\/em><em> <\/em><\/p>\n<p><em>Par\u00e1grafo \u00fanico. No ano em que houver coincid\u00eancia entre o domingo previsto para o t\u00e9rmino da hora de ver\u00e3o e o domingo de carnaval, o encerramento da hora de ver\u00e3o dar-se-\u00e1 no domingo seguinte.<\/em><\/p>\n<p><em>Fonte: <\/em><a href=\"http:\/\/www.planalto.gov.br\/ccivil_03\/_ato2007-2010\/2008\/decreto\/d6558.htm\" target=\"_blank\"><em>http:\/\/www.planalto.gov.br\/ccivil_03\/_ato2007-2010\/2008\/decreto\/d6558.htm<\/em><\/a><\/p>\n<p>No meu ambiente, os servidores j\u00e1 atualizam a hora automaticamente na ida e na volta do hor\u00e1rio de ver\u00e3o (configura\u00e7\u00e3o da galera da infra).<\/p>\n<p>Para homologar o que acontece com os Jobs agendados no SQL Server, as seguintes estruturas foram criadas:<\/p>\n<p>Uma tabela para armazenar o insert do Job:<\/p>\n<p>CREATE TABLE [dbo].[Teste_Horario_Verao](<br \/>\n[Cod] [int] IDENTITY(1,1) NOT NULL,<br \/>\n[Data] [datetime] NOT NULL default(getdate()),<br \/>\n[Texto] [varchar](8000) NULL)<\/p>\n<p>Um job que roda a cada 10 minutos no servidor conforme pode ser visto abaixo:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1218\" title=\"job1\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1.png\" alt=\"\" width=\"923\" height=\"59\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1.png 923w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1-300x19.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1-768x49.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1-700x45.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1-410x26.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1-100x6.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1-275x18.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job1-20x1.png 20w\" sizes=\"auto, (max-width: 923px) 100vw, 923px\" \/><\/a><\/p>\n<p>Esse job executa a seguinte query:<br \/>\ninsert into Teste_Horario_Verao(texto)<br \/>\nselect &#8216;Teste Horario de Verao &#8211; Job a cada 10 minutos&#8217;<\/p>\n<p><strong>1 \u2013 Homologando o in\u00edcio do Hor\u00e1rio de Ver\u00e3o<\/strong><\/p>\n<p>No in\u00edcio do hor\u00e1rio de ver\u00e3o, o hor\u00e1rio do servidor muda de 00:00h para 01:00h.<\/p>\n<p>\u00c0s 12:25h (simulando 00:00h) alterei o hor\u00e1rio do servidor manualmente para 12:35h (simulando 01:00h). Nesse momento, o job que seria executado \u00e0s 12:30h (vide figura anterior) foi executado imediatamente e sua pr\u00f3xima execu\u00e7\u00e3o foi alterada para \u00e0s 12:40h conforme pode ser conferido abaixo:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1220\" title=\"job2\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2.png\" alt=\"\" width=\"923\" height=\"55\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2.png 923w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2-300x18.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2-768x46.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2-700x42.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2-410x24.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2-100x6.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2-275x16.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job2-20x1.png 20w\" sizes=\"auto, (max-width: 923px) 100vw, 923px\" \/><\/a><\/p>\n<p>Fazendo um select na tabela, conferimos que a execu\u00e7\u00e3o das 12:30h n\u00e3o aconteceu, mas o job foi executado \u00e0s 12:35h:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query1.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1221\" title=\"query1\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query1.png\" alt=\"\" width=\"362\" height=\"213\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query1.png 451w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query1-300x176.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query1-410x241.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query1-100x59.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query1-275x162.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query1-20x12.png 20w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/a><\/p>\n<p>Ou seja, quando o hor\u00e1rio de ver\u00e3o adianta o hor\u00e1rio do servidor, os jobs que iriam ser executados nesse intervalo s\u00e3o iniciados automaticamente.<\/p>\n<p>Problemas que podem acontecer:<\/p>\n<ul>\n<li>Pode haver uma sobrecarga no servidor caso muitos jobs sejam executados juntos.<\/li>\n<li>Caso exista um job que rode a cada 10 minutos, ele s\u00f3 ser\u00e1 executado uma vez, e n\u00e3o as 6 vezes como aconteceria normalmente.<\/li>\n<\/ul>\n<p><strong>2 \u2013 Homologando o fim do hor\u00e1rio de ver\u00e3o<\/strong><\/p>\n<p>No in\u00edcio do hor\u00e1rio de ver\u00e3o, o hor\u00e1rio do servidor muda de 00:00h para 23:00h.<\/p>\n<p>O job foi executado \u00e0s 13:00h conforme abaixo:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1222\" title=\"job3\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3.png\" alt=\"\" width=\"920\" height=\"57\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3.png 920w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3-300x19.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3-768x48.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3-700x43.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3-410x25.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3-100x6.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3-275x17.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job3-20x1.png 20w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><\/a><\/p>\n<p>\u00c0s 13:05h (simulando 00:00h) a hora do servidor foi alterada para 12:55h (simulando 23:00h).<\/p>\n<p>Dando um refresh no job monitor, n\u00e3o temos nenhuma altera\u00e7\u00e3o:<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1223\" title=\"job4\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4.png\" alt=\"\" width=\"920\" height=\"57\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4.png 920w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4-300x19.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4-768x48.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4-700x43.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4-410x25.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4-100x6.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4-275x17.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job4-20x1.png 20w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><\/a><\/p>\n<p>Dando um select no banco, nenhum registro foi inserido:<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1224\" title=\"query2\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query2.png\" alt=\"\" width=\"358\" height=\"184\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query2.png 449w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query2-300x154.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query2-410x211.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query2-100x51.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query2-275x141.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query2-20x10.png 20w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><\/a><\/p>\n<p>O job manteve o seu <em>Next Run<\/em> para \u00e0s 13:10h.<\/p>\n<p>Quando a hora do servidor chegou novamente \u00e0s 13:00h, o job n\u00e3o foi executado novamente.<\/p>\n<p>Ap\u00f3s \u00e0s 13:10 podemos ver que o job foi executado normalmente.<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1225\" title=\"job5\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5.png\" alt=\"\" width=\"927\" height=\"61\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5.png 927w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5-300x20.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5-768x51.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5-700x46.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5-410x27.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5-100x7.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5-275x18.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/job5-20x1.png 20w\" sizes=\"auto, (max-width: 927px) 100vw, 927px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1226\" title=\"query3\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query3.png\" alt=\"\" width=\"335\" height=\"172\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query3.png 450w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query3-300x154.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query3-410x210.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query3-100x51.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query3-275x141.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2012\/02\/query3-20x10.png 20w\" sizes=\"auto, (max-width: 335px) 100vw, 335px\" \/><\/a><\/p>\n<p>Ou seja, quando o hor\u00e1rio de ver\u00e3o atrasa o hor\u00e1rio do servidor, os jobs que est\u00e3o nesse intervalo n\u00e3o s\u00e3o executados mais do que uma vez.<\/p>\n<p>Problemas que podem acontecer:<\/p>\n<ul>\n<li>Caso exista um job que rode a cada 5 minutos, esse job ficar\u00e1 uma hora sem rodar. Se ele for um job que fa\u00e7a backup do log e sua base tiver muita altera\u00e7\u00e3o, corre o risco de acontecer um transaction log full. A \u00fanica solu\u00e7\u00e3o que vejo \u00e9 execut\u00e1-lo manualmente.<\/li>\n<li>Os inserts com getdate() n\u00e3o ficam sequenciais pois pode acontecer um insert \u00e0s 23:50h e ap\u00f3s a volta do hor\u00e1rio, outro insert acontecer\u00e1 \u00e0s 23:10h.<\/li>\n<\/ul>\n<p>Uma poss\u00edvel solu\u00e7\u00e3o para o problema dos inserts com getdate(), seria a utiliza\u00e7\u00e3o de um fuso hor\u00e1rio que n\u00e3o seja afetado pelo hor\u00e1rio de ver\u00e3o (UTC &#8211; Universal Coordinated Time ). Neste caso, o controle da hora seria feito, por exemplo, com uma fun\u00e7\u00e3o que verifica se a hora corrente deve ser alterada em uma hora (per\u00edodo de hor\u00e1rio de ver\u00e3o) ou n\u00e3o.<\/p>\n<p>Artigos refer\u00eancias para serem verificados:<\/p>\n<ul>\n<li><a href=\"http:\/\/support.microsoft.com\/kb\/931975\/pt-br \" target=\"_blank\">http:\/\/support.microsoft.com\/kb\/931975\/pt-br <\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"http:\/\/blogs.technet.com\/b\/mhunecke\/archive\/2009\/09\/03\/como-se-preparar-para-o-hor-rio-brasileiro-de-ver-o-2009-2010.aspx\" target=\"_blank\">http:\/\/blogs.technet.com\/b\/mhunecke\/archive\/2009\/09\/03\/como-se-preparar-para-o-hor-rio-brasileiro-de-ver-o-2009-2010.aspx<\/a><\/li>\n<\/ul>\n<p>Caso encontrem outros problemas relacionados ao hor\u00e1rio de ver\u00e3o, coment\u00e1rios s\u00e3o bem vindos.<\/p>\n<p><b>Gostou desse Post?<\/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>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, O que voc\u00eas fazem com seus jobs do SQL Server no inicio e no fim do hor\u00e1rio de ver\u00e3o? Essa semana eu fiz alguns um teste de homologa\u00e7\u00e3o em uma VM para comprovar o que exatamente acontece com os Jobs do SQL Server. A regra do hor\u00e1rio de ver\u00e3o \u00e9 a seguinte: Art. [&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,280],"tags":[559,564,562,549,550,547,560,552,558,555,557,554,553,565,561,556,548,563,49,33,551],"class_list":["post-1217","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-virtual-pass-br","tag-atualizacao-horario-de-verao","tag-como-se-preparar-para-o-horario-de-verao","tag-decreto-horario-de-verao","tag-fim-do-horario-de-verao","tag-final-do-horario-de-verao","tag-horario-de-verao","tag-horario-de-verao-servidores","tag-horario-de-verao-termina","tag-horario-de-verao-windows","tag-inicio-horario-de-verao","tag-mudanca-horario-de-verao","tag-o-horario-de-verao","tag-o-que-e-o-horario-de-verao","tag-preparacao-horario-de-verao","tag-problema-horario-de-verao","tag-quando-comeca-o-horario-de-verao","tag-quando-termina-o-horario-de-verao","tag-regra-horario-de-verao","tag-sql","tag-sql-server","tag-termino-do-horario-de-verao"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/1217","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=1217"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/1217\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=1217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=1217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=1217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}