{"id":1630,"date":"2022-03-14T16:30:27","date_gmt":"2022-03-14T19:30:27","guid":{"rendered":"https:\/\/powertuning.com.br\/?p=1630"},"modified":"2022-05-30T11:58:59","modified_gmt":"2022-05-30T14:58:59","slug":"erro-ao-executar-sp_send_mail-via-job","status":"publish","type":"post","link":"https:\/\/powertuning.com.br\/blog\/erro-ao-executar-sp_send_mail-via-job\/","title":{"rendered":"Erro ao executar SP_SEND_MAIL via JOB"},"content":{"rendered":"<p class=\"x_MsoNormal\">No post de hoje vamos compartilhar o caso de um cliente que tem um job que manda um e-mail via SP_Send_Mail com o resultado de uma query no csv.<\/p>\n<pre class=\"lang:tsql decode:true\">EXEC msdb.dbo.sp_send_dbmail\r\n\t@profile_name = 'MSSQLSERVER',\r\n\t@recipients = 'Teste@teste.com.br',\r\n\t@subject = 'Relat\u00f3rio',\r\n\t@body = 'Ol\u00e1! &lt;strong&gt;Teste&lt;\/strong&gt;',\r\n\t@execute_query_database = 'BaseTeste',\r\n\t@body_format = 'html',\r\n\t@from_address = 'Teste@teste.com.br',\r\n\t@query = 'SET NOCOUNT ON;\r\n\r\n\tSELECT TOP 10 * FROM Tabela_Teste\r\n\r\n\r\n\t',\r\n\t@query_attachment_filename = 'anexo.csv',\r\n\t@attach_query_result_as_file = 1,\r\n\t@query_result_header = 1,\r\n\t@query_result_width = 256,\r\n\t@query_result_separator = ' ',\r\n\t@query_result_no_padding = 1<\/pre>\n<p class=\"x_MsoNormal\">\n<p>Por\u00e9m o job falhava com a seguinte mensagem:<\/p>\n<p style=\"text-align: center;\"><strong>\u201cFailed to initialize sqlcmd library with error number -2147467259. [SQLSTATE 42000] (Error 22050).\u00a0 The step failed.\u201d<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Ao consultar a documenta\u00e7\u00e3o da Microsoft ela informa que esse erro est\u00e1 na combina\u00e7\u00e3o dos seguintes par\u00e2metros:<\/p>\n<p style=\"text-align: center;\"><strong>&#8220;The following error may occur when setting @querry_result_header to 0 and setting @querry_no_truncate to 1: Msg 22050, Level 16, State 1, Line 12: Failed to initialize sqlcmd library whith error number -21477024809&#8221;<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p class=\"x_MsoNormal\">O erro ocorre quando o par\u00e2metro @query_result_header = 0 e o @query_no_truncate = 1. Mas o job estava fazendo exatamente o contr\u00e1rio @query_result_header = 1 e o @query_no_truncate = 0 (valor padr\u00e3o quando n\u00e3o informado).<\/p>\n<p class=\"x_MsoNormal\">Portanto n\u00e3o era esse o problema.<\/p>\n<p class=\"x_MsoNormal\">Quando o comando do job era executado via ssms o erro n\u00e3o ocorria.<\/p>\n<p class=\"x_MsoNormal\">Fiz os testes na minha m\u00e1quina e o job funcionou sem erros. Parti para verificar se o usu\u00e1rio que estava executando o job tinha os acessos necess\u00e1rios. No caso do cliente o usu\u00e1rio do servi\u00e7o n\u00e3o existia no banco de dados, ent\u00e3o criei o mesmo.<\/p>\n<p class=\"x_MsoNormal\">O acesso para execu\u00e7\u00e3o da SP_Send_Mail \u00e9 o acesso a ROLE DatabaseMailUserRole no MSDB. Concedi esse acesso ao usu\u00e1rio do servi\u00e7o, por\u00e9m o erro persistia.<\/p>\n<pre class=\"lang:tsql decode:true\">USE [msdb]\r\nGO\r\nCREATE USER [Teste] FOR LOGIN [Teste]\r\nGO\r\nUSE [msdb]\r\nGO\r\nALTER ROLE [DatabaseMailUserRole] ADD MEMBER [Teste]\r\nGO<\/pre>\n<p class=\"x_MsoNormal\">Concedi esse acesso ao usu\u00e1rio do servi\u00e7o, por\u00e9m o erro persistia.<\/p>\n<p class=\"x_MsoNormal\">Criei ent\u00e3o um profile para capturar os erros que ocorriam ao executar o job e foi assim que peguei que o erro era a falta de acesso \u00e0 base onde o select estava sendo executado e n\u00e3o tinha nada a ver com a msg de erro do job.<\/p>\n<p class=\"x_MsoNormal\">Acesso de leitura concedida na base do select e erro resolvido.<\/p>\n<pre class=\"lang:tsql decode:true\">USE [BaseTeste]\r\nGO\r\nCREATE USER [Teste] FOR LOGIN [Teste]\r\nGO\r\nUSE [BaseTeste]\r\nGO\r\nALTER ROLE [db_datareader] ADD MEMBER [Teste]\r\nGO<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>No post de hoje vamos compartilhar o caso de um cliente que tem um job que manda um e-mail via SP_Send_Mail com o resultado de uma query no csv. EXEC msdb.dbo.sp_send_dbmail @profile_name = &#8216;MSSQLSERVER&#8217;, @recipients = &#8216;Teste@teste.com.br&#8217;, @subject = &#8216;Relat\u00f3rio&#8217;, @body = &#8216;Ol\u00e1! &lt;strong&gt;Teste&lt;\/strong&gt;&#8217;, @execute_query_database = &#8216;BaseTeste&#8217;, @body_format = &#8216;html&#8217;, @from_address = &#8216;Teste@teste.com.br&#8217;, @query =&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/powertuning.com.br\/blog\/erro-ao-executar-sp_send_mail-via-job\/\">Leia mais<\/a><\/p>\n","protected":false},"author":9,"featured_media":1641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,63],"tags":[],"class_list":["post-1630","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sem-categoria","category-sql-server"],"jetpack_featured_media_url":"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2022\/03\/Imagem-destaque-post-walter.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/1630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1630"}],"version-history":[{"count":6,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/1630\/revisions"}],"predecessor-version":[{"id":1648,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/1630\/revisions\/1648"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/media\/1641"}],"wp:attachment":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}