Erro ao executar SP_SEND_MAIL via JOB

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.
Porém o job falhava com a seguinte mensagem:
“Failed to initialize sqlcmd library with error number -2147467259. [SQLSTATE 42000] (Error 22050). The step failed.”
Ao consultar a documentação da Microsoft ela informa que esse erro está na combinação dos seguintes parâmetros:
“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”
O erro ocorre quando o parâmetro @query_result_header = 0 e o @query_no_truncate = 1. Mas o job estava fazendo exatamente o contrário @query_result_header = 1 e o @query_no_truncate = 0 (valor padrão quando não informado).
Portanto não era esse o problema.
Quando o comando do job era executado via ssms o erro não ocorria.
Fiz os testes na minha máquina e o job funcionou sem erros. Parti para verificar se o usuário que estava executando o job tinha os acessos necessários. No caso do cliente o usuário do serviço não existia no banco de dados, então criei o mesmo.
O acesso para execução da SP_Send_Mail é o acesso a ROLE DatabaseMailUserRole no MSDB. Concedi esse acesso ao usuário do serviço, porém o erro persistia.
Concedi esse acesso ao usuário do serviço, porém o erro persistia.
Criei então 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 à base onde o select estava sendo executado e não tinha nada a ver com a msg de erro do job.
Acesso de leitura concedida na base do select e erro resolvido.