{"id":8029,"date":"2017-11-21T11:01:08","date_gmt":"2017-11-21T13:01:08","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=8029"},"modified":"2017-11-21T11:01:08","modified_gmt":"2017-11-21T13:01:08","slug":"casos-do-dia-a-dia-mensagens-desnecessarias-no-history-de-um-job","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2017\/11\/21\/casos-do-dia-a-dia-mensagens-desnecessarias-no-history-de-um-job\/","title":{"rendered":"Casos do Dia a Dia: Mensagens desnecess\u00e1rias no History de um JOB"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Hoje vou compartilhar com voc\u00eas uma\u00a0dica r\u00e1pida para evitar um problema que pego em alguns clientes.<\/p>\n<p>J\u00e1 perdi as contas de quantas vezes tentei <strong>encontrar um ERRO<\/strong>\u00a0<strong>no History de um JOB, <\/strong>mas ele tinha um milh\u00e3o de mensagens que me atrapalharam a ver a mensagem exata do erro. Exemplo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8034\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_C_PRINT.png\" alt=\"\" width=\"683\" height=\"528\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_C_PRINT.png 683w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_C_PRINT-300x232.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_C_PRINT-410x317.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_C_PRINT-100x77.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_C_PRINT-275x213.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_C_PRINT-20x15.png 20w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/p>\n<p>Nesse exemplo, utilizei o script abaixo. Ele \u00e9 bem simples, faz um loop com 100 itera\u00e7\u00f5es e em cada uma delas utiliza o comando <strong>PRINT<\/strong> para registrar uma mensagem\u00a0no History do JOB. Por fim, faz uma <strong>divis\u00e3o por zero<\/strong>\u00a0para gerar um erro.<\/p>\n<pre class=\"lang:tsql decode:true \">DECLARE @LOOP INT\r\n\r\nSELECT @LOOP = 1\r\n\r\nWHILE(@LOOP &lt; 100)\r\nBEGIN\r\nPRINT 'TESTE MENSAGEM HISTORY JOB!'\r\n\r\nSELECT @LOOP = @LOOP + 1\r\nEND\r\n\r\nSELECT 1 \/ 0<\/pre>\n<p>Agora, comentando a linha do PRINT e executando o JOB novamente, temos o resultado abaixo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8035\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_S_PRINT.png\" alt=\"\" width=\"678\" height=\"388\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_S_PRINT.png 678w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_S_PRINT-300x172.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_S_PRINT-410x235.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_S_PRINT-100x57.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_S_PRINT-275x157.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/MENSAGEM_JOB_S_PRINT-20x11.png 20w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/p>\n<p>Repare que\u00a0dessa vez conseguimos identificar facilmente o erro, pois n\u00e3o temos nenhuma mensagem no History para nos atrapalhar.<\/p>\n<p><strong>Resumindo:<\/strong><\/p>\n<p>O ponto que quero ressaltar aqui \u00e9 a <strong>necessidade de utilizar o comando PRINT<\/strong> no c\u00f3digo. Muitas vezes, ao questionar o cliente sobre a\u00a0utiliza\u00e7\u00e3o desse comando, ele informa que n\u00e3o era necess\u00e1rio e que foi usado apenas para teste\/valida\u00e7\u00e3o da rotina, mas que esqueceram de remover\u00a0ao terminar.<\/p>\n<p>Algu\u00e9m pode falar que o <strong>PRINT<\/strong> pode ser\u00a0utilizado para acompanhar a execu\u00e7\u00e3o da rotina, mas nesse caso, acho que seria mais interessante utilizar uma tabela para armazenar esse resultado com a hora, mensagem e demais informa\u00e7\u00f5es necess\u00e1rias. Com isso, evitamos ter esse tipo de problema com o History do JOB.<\/p>\n<p>Essa \u00e9 uma quest\u00e3o bem simples\u00a0mas pode facilitar sua vida na resolu\u00e7\u00e3o de um problema.<\/p>\n<p><b>Gostou dessa Dica?<\/b><\/p>\n<p>Curta, comente, compartilhe com os coleguinhas\u2026<\/p>\n<p>Assine meu canal no <a href=\"https:\/\/www.youtube.com\/channel\/UCeBRAO_LLrUdSrOXIywjzRA\" target=\"_blank\" rel=\"noopener noreferrer\">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>At\u00e9 a pr\u00f3xima.<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>Microsoft Data Platform MVP<\/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 uma\u00a0dica r\u00e1pida para evitar um problema que pego em alguns clientes. J\u00e1 perdi as contas de quantas vezes tentei encontrar um ERRO\u00a0no History de um JOB, mas ele tinha um milh\u00e3o de mensagens que me atrapalharam a ver a mensagem exata do erro. Exemplo: Nesse exemplo, utilizei 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":"","jetpack_post_was_ever_published":false},"categories":[3,6],"tags":[1593,1590,1592,1589,1591,1594],"class_list":["post-8029","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","tag-comando-print","tag-falha-job-sql-server","tag-history-job-sql-server","tag-job-sqlserver","tag-mensagem-erro-job","tag-print-sql-server"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":517,"url":"https:\/\/fabriciolima.net\/blog\/2011\/03\/09\/querys-do-dia-a-dia-como-visualizar-o-historico-de-um-job\/","url_meta":{"origin":8029,"position":0},"title":"Querys do Dia a Dia &#8211; Como Visualizar o Hist\u00f3rico de um Job","author":"Fabr\u00edcio Lima","date":"9 de mar\u00e7o de 2011","format":false,"excerpt":"Querys do Dia a Dia - Como Visualizar o Hist\u00f3rico de um Job no SQL Server","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":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/03\/jobs-300x253.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":8022,"url":"https:\/\/fabriciolima.net\/blog\/2017\/12\/05\/casos-do-dia-a-dia-resolvendo-a-falha-de-um-job-automaticamente-com-a-opcao-retry-job\/","url_meta":{"origin":8029,"position":1},"title":"Casos do Dia a Dia: Resolvendo a falha de um job automaticamente com a op\u00e7\u00e3o RETRY JOB","author":"Fabr\u00edcio Lima","date":"5 de dezembro de 2017","format":false,"excerpt":"Ol\u00e1 Pessoal, Quem a\u00ed nunca teve uma falha de job onde a solu\u00e7\u00e3o para essa falha foi simplesmente executar o job novamente? Isso acontece muito em jobs de backup onde trafegamos os dados para outro local na rede. Por um momento de instabilidade na rede na madrugada ou no fim\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\/08\/RETRY_Configuracao.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/RETRY_Configuracao.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/08\/RETRY_Configuracao.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1855,"url":"https:\/\/fabriciolima.net\/blog\/2012\/10\/29\/casos-do-dia-a-dia-error-formatting-query-probably-invalid-paramters\/","url_meta":{"origin":8029,"position":2},"title":"Casos do Dia a Dia &#8211; Error formatting query, probably invalid paramters","author":"Fabr\u00edcio Lima","date":"29 de outubro de 2012","format":false,"excerpt":"Ol\u00e1 Pessoal, Realizando uma Consultoria Remota em um cliente, criei um job para mandar um determinado alerta e esse job executava um comando como o abaixo: EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Profile', @recipients = 'E-mails', @query = 'Select em v\u00e1rias DMVs', @Subject = 'Assunto'; Contudo, esse job n\u00e3o estava funcionando e\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":[]},{"id":910,"url":"https:\/\/fabriciolima.net\/blog\/2011\/06\/29\/rotina-para-atualizar-as-estatisticas-do-seu-banco-de-dados\/","url_meta":{"origin":8029,"position":3},"title":"Rotina para Atualizar as Estat\u00edsticas do seu Banco de Dados","author":"Fabr\u00edcio Lima","date":"29 de junho de 2011","format":false,"excerpt":"Rotina para Atualizar as Estat\u00edsticas do seu Banco de Dados","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":[]},{"id":9844,"url":"https:\/\/fabriciolima.net\/blog\/2018\/12\/07\/managed-instance-17-tirando-relatorios-pesados-da-producao-e-executando-em-uma-replica-com-dados-online\/","url_meta":{"origin":8029,"position":4},"title":"Managed Instance (#17) \u2013 Tirando relat\u00f3rios pesados da produ\u00e7\u00e3o e executando em uma r\u00e9plica com dados Online!","author":"Fabr\u00edcio Lima","date":"7 de dezembro de 2018","format":false,"excerpt":"Fala Pessoal, Segue mais um post da s\u00e9rie sobre Managed Instance. A ideia desse post \u00e9 simular 1 loop fazendo insert e 3 loops fazendo consultas para monitorar o consumo de CPU do servidor. Primeiramente vou rodar tudo em uma \u00fanica inst\u00e2ncia. Depois vou balancear a carga e mandar as\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\/12\/Managedinstance_ReadOnly_2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/12\/Managedinstance_ReadOnly_2.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":9285,"url":"https:\/\/fabriciolima.net\/blog\/2018\/08\/13\/azure-sql-database-como-criar-um-job-para-executar-uma-procedure\/","url_meta":{"origin":8029,"position":5},"title":"Azure SQL Database &#8211; Como criar um Job para executar uma procedure?","author":"Fabr\u00edcio Lima","date":"13 de agosto de 2018","format":false,"excerpt":"Fala Pessoal, Continuando a s\u00e9rie de posts sobre Azure SQL Database, dessa vez vou resolver um problema que muitos de voc\u00eas que j\u00e1 est\u00e3o trabalhando com o Azure SQL devem ter passado. Fabr\u00edcio, o Azure SQL Database n\u00e3o tem um Agent???? Como que vou rodar meus Jobs de Desfragmenta\u00e7\u00e3o de\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\/08\/AzureSerie04.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/08\/AzureSerie04.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/8029","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=8029"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/8029\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=8029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=8029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=8029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}