none
Problema SP send_dbmail RRS feed

  • Pergunta

  • Boa tarde, já estava tratando esse assunto, no entanto foi encerrado.

    Estou com um problema  bem especifico, estou criando uma trigger, para enviar um email para os interessados, assim que algo de interesse deles é adicionado ou retirado do sistema.

    No entanto eu estou tendo alguns problemas, a principio a trigger estava funcionando normalmente. Mais para o que eu preciso é necessário que eu também use o @query do send_mail para por exemplo enviar os registros recém adicionados ao banco de dados.

    O mais estranho é que sem o @query tudo funciona normalmente, porem quando adiciono o @query a consulta fica executando eternamente e não finaliza.

    Segue novamente o trecho do código

    CREATE TRIGGER SC1_MAIL ON SC1990
     AFTER INSERT 
     AS
       -- variáveis de consulta ao banco
       declare @num varchar(6);
       declare @solict varchar(25);
       
       -- variáveis de envio do email
       Declare @sbody as VarChar(4000);
       
       
       select @num=i.C1_NUM,  
              @solict=i.C1_SOLICIT
       from inserted i;
       
       set @sbody = 'Solic. Num: ' + @num + '   Solicit: ' + @solict;
       
      -- Declare @queryy as nvarChar(max) = 'SELECT C1_PRODUTO, C1_QUANT FROM MP12.dbo.SC1990';
     
       EXEC msdb.dbo.sp_send_dbmail
       @profile_name = 'Perfil Padrao',
       @recipients = 'teste@teste.com.br',
       @subject = 'Numero:',
       @body = @sbody,
       @query = 'SELECT C1_PRODUTO, C1_QUANT FROM MP12.dbo.SC1990;',
       @body_format = 'HTML',
       @attach_query_result_as_file = 1;
       GO

    segunda-feira, 30 de novembro de 2015 16:01

Respostas

  • Lucas,

    Eu sugeri você fazer isso somente para verificar se a trigger executa sem problemas. Se executar, o erro é bem específico da chamada da SP. O objetivo era saber exatamente o comando que gera o problema.

    Antonio Cesar


    • Editado Antonio Cesar segunda-feira, 30 de novembro de 2015 18:16
    • Marcado como Resposta Marcos SJ quinta-feira, 3 de dezembro de 2015 16:17
    segunda-feira, 30 de novembro de 2015 15:06

Todas as Respostas

  • Pessoal boa tarde,
    Estou tendo problemas ao utilizar a SP send_dbmail juntamente com uma

    Trigger que eu criei.

    Basicamente a trigger vai servir para avisar determinado email que foram

    inseridos novos registros.

    O estranho é que a trigger e o envio simples do email estavam funcionando

    normal.

    O problema começou a ocorrer após eu adicionar a função da SP @query, dessa

    forma quando vou efetuar o INSERT ele fica executando infinitamente porem

    não retorna nenhum erro.

    CREATE TRIGGER SC1_MAIL ON SC1990
     AFTER INSERT 
     AS
       -- variaveis de consulta ao banco
       declare @num varchar(6);
       declare @solict varchar(25);
       
       -- variaveis de envio do email
       Declare @sbody as VarChar(4000);
       
       
       select @num=i.C1_NUM,  
              @solict=i.C1_SOLICIT
       from inserted i;
       
       set @sbody = 'Solic. Num: ' + @num + '   Solicit: ' + @solict;
       
      -- Declare @queryy as nvarChar(max) = 'SELECT C1_PRODUTO, C1_QUANT FROM 
    
    MP12.dbo.SC1990';
     
       EXEC msdb.dbo.sp_send_dbmail
       @profile_name = 'Perfil Padrao',
       @recipients = 'teste@teste.com.br',
       @subject = 'Numero:',
       @body = @sbody,
       @query = 'SELECT C1_PRODUTO, C1_QUANT FROM MP12.dbo.SC1990;',
       @body_format = 'HTML',
       @attach_query_result_as_file = 1;
       GO

    Se alguém puder ajudar agradeço.


    • Editado Lucas Fernando Rosa quinta-feira, 26 de novembro de 2015 19:30 email
    • Mesclado Marcos SJ segunda-feira, 30 de novembro de 2015 17:57 Thread duplicada
    quinta-feira, 26 de novembro de 2015 19:29
  • Lucas, boa noite. Como era o código que estava funcionando? Eu gostaria de comparar com esse que está dando erro. Antonio Cesar
    sexta-feira, 27 de novembro de 2015 00:05
  • Ola Antonio tudo bem ?

    O código é a mesma coisa apenas sem:

    @query, @attach_query_result_as_file.

    Realmente não tem nenhuma outra diferença, como falei se eu utilizo o send_dbmail fora da trigger funciona.

    Não sei se pode ter algo a ver com alguma permissão, pois não estou conseguindo identificar.

    Alias estou usando usuario SA para esses testes.

    sexta-feira, 27 de novembro de 2015 12:58
  • Lucas, boa tarde.

    Tente pegar todo o código da trigger e execute numa sessão separada, como se fosse um script. Onde é feita referencia aos dados inseridos (Inserted), remova a referencia e coloque os valores desejados para as variáveis @num e @solict. Veja se não ocorre erro. Se ocorrer, faça o acerto no código e veja se funciona. Se funcionar no script, faça o acerto na trigger e refaça os testes.

    Antonio Cesar

    sexta-feira, 27 de novembro de 2015 15:13
  • Continuo sem conseguir identificar.

    Executei o script como você me falou, retirei o inserted e no lugar adicionei um select comum.

    Foi executado normalmente.


    Então retirei o inserted da Trigger apenas para fazer um teste pois achei que iria funcionar.

    No entanto o problema continua.
    sexta-feira, 27 de novembro de 2015 16:38
  • Se você comentar a chamada da SP sp_send_dbmail na trigger, executa normalmente também? Antonio Cesar
    sexta-feira, 27 de novembro de 2015 17:34
  • Bom dia,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente

    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ segunda-feira, 30 de novembro de 2015 12:14
    segunda-feira, 30 de novembro de 2015 12:14
  • Não entendi o que voce quis dizer.

    Se eu não chamar a SP sp_send_dbmail na trigger, as variaveis para o envio de mail não vão funcionar. Eu desconheço outra forma de enviar email pelo SQLSERVER sem utilizar o sp_send_dbmail.

    segunda-feira, 30 de novembro de 2015 14:10
  • Lucas,

    Eu sugeri você fazer isso somente para verificar se a trigger executa sem problemas. Se executar, o erro é bem específico da chamada da SP. O objetivo era saber exatamente o comando que gera o problema.

    Antonio Cesar


    • Editado Antonio Cesar segunda-feira, 30 de novembro de 2015 18:16
    • Marcado como Resposta Marcos SJ quinta-feira, 3 de dezembro de 2015 16:17
    segunda-feira, 30 de novembro de 2015 15:06
  • Lucas Fernando Rosa,

    Você levou em conta a observação do Antonio Cesar?

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 2 de dezembro de 2015 12:54
  • Desculpe pela demora em retornar é que estou com varias outras coisas para resolver.

    Acabei não tendo muito tempo para mexer na trigger, mais continua com o mesmo problema.

    Se eu não utilizo o SP_SEND a trigger funciona normalmente, se utilizo a SP_SEND funciona apenas não funciona quando eu utilizo:

    @query, @attach_query_result_as_file.

    Será que pode ter algum bloqueio ? Como já mencionei estou utilizando usuário SA e aparentemente todas as permissões estão concedidas.

    segunda-feira, 14 de dezembro de 2015 12:02