{"id":17732,"date":"2022-07-31T10:40:35","date_gmt":"2022-07-31T13:40:35","guid":{"rendered":"https:\/\/www.fabriciolima.net\/?p=17732"},"modified":"2022-07-31T10:40:35","modified_gmt":"2022-07-31T13:40:35","slug":"resposta-do-desafio-o-que-pode-causar-um-comportamento-estranho-no-waitfor-delay","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2022\/07\/31\/resposta-do-desafio-o-que-pode-causar-um-comportamento-estranho-no-waitfor-delay\/","title":{"rendered":"[Resposta do Desafio] O que pode causar um comportamento estranho no waitfor delay?"},"content":{"rendered":"<p>Fala Pessoal,<\/p>\n<p>Passando aqui para compartilhar a resposta de um desafio que fiz no Linkedin.<\/p>\n<p>Se ainda n\u00e3o me segue por l\u00e1, antes tarde que mais tarde:<\/p>\n<ul>\n<li>Linkedin:\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.linkedin.com\/in\/fabriciofrancalima\/\" target=\"_blank\" rel=\"noopener noreferrer external nofollow\" data-wpel-link=\"external\">https:\/\/www.linkedin.com\/in\/fabriciofrancalima\/<\/a><\/li>\n<\/ul>\n<h5><\/h5>\n<h5>Desafio: O que pode causar esse comportamento abaixo?<\/h5>\n<p>Voc\u00ea executa um waitfor delay de 1 minuto e faz um datediff para salvar o tempo da execu\u00e7\u00e3o.<\/p>\n<p>O SQL Server vai l\u00e1 e grava 2 minutos e 5 segundos no resultado. kkkk<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-17741 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-300x114.jpg\" alt=\"\" width=\"603\" height=\"229\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-300x114.jpg 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-1024x389.jpg 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-768x292.jpg 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-700x266.jpg 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-410x156.jpg 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-100x38.jpg 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-275x104.jpg 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min-20x8.jpg 20w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/datediff-2-min.jpg 1096w\" sizes=\"auto, (max-width: 603px) 100vw, 603px\" \/><\/p>\n<p>O\u00a0<a href=\"https:\/\/www.linkedin.com\/in\/ACoAAAn-URQBF4mieE0FfAV_FV8IcfFOBsrQAyI\" data-attribute-index=\"0\" data-entity-hovercard-id=\"urn:li:fs_miniProfile:ACoAAAn-URQBF4mieE0FfAV_FV8IcfFOBsrQAyI\" data-entity-type=\"MINI_PROFILE\">Rodrigo Ribeiro Gomes<\/a>\u00a0desvendou o mist\u00e9rio e achou duas situa\u00e7\u00f5es que causam isso.<\/p>\n<p>C\u00f3digo:<\/p>\n<p>create table testWaitfor(ts datetime, e datetime, dur int)<br \/>\ndeclare @s datetime = getdate();<br \/>\nwaitfor delay &#8217;00:01:00&#8242;;<br \/>\ninsert into testWaitfor values(@s,getdate(),datediff(MS,@s,getdate()))<br \/>\nselect * from testWaitfor<\/p>\n<p>*Ninguem fez update na tabela para ficar com esse result<br \/>\n**somente essa query rodando no ambiente (sem concorr\u00eancia e recursos sobrando)<\/p>\n<p>&nbsp;<\/p>\n<h5>Resposta do Desafio (Essa ningu\u00e9m acertou)<\/h5>\n<p>Como falei, o Rodrigo encontrou duas respostas para esse comportamento.<\/p>\n<p><strong>1 &#8211; Altera\u00e7\u00e3o da Data do Servidor onde est\u00e1 o SQL Server<\/strong><\/p>\n<p>Essa \u00e9 a respota mais simples e que muita gente conseguiu acertar.<\/p>\n<p>Se voc\u00ea inicia o waitfor delay e muda o hor\u00e1rio do servidor, na segunda execu\u00e7\u00e3o do getdate() ter\u00e1 o valor do hor\u00e1rio que colocou. Dessa forma, seu waitfor delay ir\u00e1 gerar um valor diferente de 1 minuto.<\/p>\n<p>No meu caso, n\u00e3o era esse porque n\u00e3o alterei nada e mesmo assim tive esse comportamento.<\/p>\n<p><strong>2 &#8211; Suspender seu computador<\/strong><\/p>\n<p>=)<\/p>\n<p>Mano&#8230; Era muito dif\u00edcil adivinhar que isso acontecia.<\/p>\n<p>No meu caso e do Rodrigo foi mais f\u00e1cil porque tivemos algumas pistas.<\/p>\n<p>Eu acabava meu trabalho as 22h e suspendia minha m\u00e1quina para dormir. No outro dia de manha ligava ela novamente para voltar a trabalhar.<\/p>\n<p><strong>O PowerAlerts (quem n\u00e3o usar \u00e9 louco!)<\/strong> agora vem com um log para monitorar o tempo de execu\u00e7\u00e3o das procedures dele.<\/p>\n<p>Quando fui ver, tinha procedure demorando 13 horas.<\/p>\n<p>Falei, WHAT !!???<\/p>\n<p>Gastei um temp\u00e3o olhando a proc&#8230;.<\/p>\n<p>Mas a\u00ed percebendo o hor\u00e1rio que batia quando eu ia dormir e quanto voltava, ficou mais f\u00e1cil associar a suspens\u00e3o do computador.<\/p>\n<p>Vou fazer um teste aqui agora para voc\u00eas:<\/p>\n<p><strong>Passo 1 &#8211; Executar esse Script<\/strong><\/p>\n<p>CREATE table testWaitfor(ts datetime, e datetime, dur int)<br \/>\ndeclare @s datetime = getdate();<br \/>\nwaitfor delay &#8217;00:01:00&#8242;;<br \/>\ninsert into testWaitfor values(@s,getdate(),datediff(MS,@s,getdate()))<br \/>\nselect * from testWaitfor<\/p>\n<p><strong>Passo 2 &#8211; Suspenda seu PC e aguarde por mais de 1 minuto para ligar novamente<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-17738 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/suspender-PC.jpg\" alt=\"\" width=\"282\" height=\"168\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/suspender-PC.jpg 282w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/suspender-PC-100x60.jpg 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/suspender-PC-275x164.jpg 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/suspender-PC-20x12.jpg 20w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><\/p>\n<p><strong>Passo 3 &#8211; Ap\u00f3s ligar o PC, confira na tabela o Log de execu\u00e7\u00e3o do waitfor delay<\/strong><\/p>\n<p>select * from testWaitfor<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-17739 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos-300x75.jpg\" alt=\"\" width=\"588\" height=\"147\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos-300x75.jpg 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos-768x191.jpg 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos-700x174.jpg 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos-410x102.jpg 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos-100x25.jpg 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos-275x68.jpg 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos-20x5.jpg 20w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2022\/07\/DATEDIFF-3-minutos.jpg 781w\" sizes=\"auto, (max-width: 588px) 100vw, 588px\" \/><\/p>\n<p>Que doido n\u00e9!<\/p>\n<p>Testem ai e me falem se tiveram o mesmo comportamento.<\/p>\n<p>O SQL continua a execu\u00e7\u00e3o do meu processo ap\u00f3s suspender o PC. Ele n\u00e3o mata a conex\u00e3o como eu achava que seria o comportamento normal.<\/p>\n<p>Claro que ningu\u00e9m vai suspender um Servidor de produ\u00e7\u00e3o.<\/p>\n<p>Mas esse \u00e9 um comportamento inusitado que percebi pela primeira vez nos meus 16 anos de SQL Server.<\/p>\n<p>Curiosidades assim s\u00e3o sempre legais de descobrir.<\/p>\n<p>Valeu Pessoal.<\/p>\n<p>Me siga la no Linkedin que quando aparecer umas coisas doidas assim, posto l\u00e1.<\/p>\n<p>Siga o Rodrigo tamb\u00e9m que ele tem mais desafios ainda para contar para voces.<\/p>\n<p>Inclusive esse recente:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.linkedin.com\/posts\/rodrigoribeirogomes_sqlserver-powertuning-tsql-activity-6958920720542281728-DM9G?utm_source=linkedin_share&amp;utm_medium=member_desktop_web\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.linkedin.com\/posts\/rodrigoribeirogomes_sqlserver-powertuning-tsql-activity-6958920720542281728-DM9G?utm_source=linkedin_share&amp;utm_medium=member_desktop_web<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>CEO Power Tuning<\/p>\n<p>Microsoft Data Platform MVP<\/p>\n<p>Instagram:\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.instagram.com\/fabriciofrancalima\/\" target=\"_blank\" rel=\"noopener external noreferrer nofollow\" data-wpel-link=\"external\">@fabriciofrancalima<\/a><\/p>\n<p>Linkedin:\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.linkedin.com\/in\/fabriciofrancalima\/\" target=\"_blank\" rel=\"noopener noreferrer external nofollow\" data-wpel-link=\"external\">https:\/\/www.linkedin.com\/in\/fabriciofrancalima\/<\/a><\/p>\n<p>Consultoria:\u00a0comercial@powertuning.com.br<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal, Passando aqui para compartilhar a resposta de um desafio que fiz no Linkedin. Se ainda n\u00e3o me segue por l\u00e1, antes tarde que mais tarde: Linkedin:\u00a0https:\/\/www.linkedin.com\/in\/fabriciofrancalima\/ Desafio: O que pode causar esse comportamento abaixo? Voc\u00ea executa um waitfor delay de 1 minuto e faz um datediff para salvar o tempo da execu\u00e7\u00e3o. O [&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,33],"tags":[1893,23,1895,1899,1891,1900,33,1894,1892,1896,1897,1898],"class_list":["post-17732","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-sql-server","tag-charadas-sql-server","tag-dba","tag-desafio-dba","tag-desafio-do-linkedin","tag-desafio-sql-server","tag-linkedin","tag-sql-server","tag-teste-dba","tag-teste-sql-server","tag-waitfor-delay","tag-waitfor-delay-errado","tag-wrong-waitfor-delay"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/17732","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=17732"}],"version-history":[{"count":3,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/17732\/revisions"}],"predecessor-version":[{"id":17743,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/17732\/revisions\/17743"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=17732"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=17732"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=17732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}