Pergunta

Estou tentando enviar e -mails do banco de dados quando o erro ocorre dentro da transação.My Setup para dbo.sp_send_dbmail está correto, quando executo o proc, recebo um email dentro de 1 min.

No entanto, quando tento usar dbo.sp_send_dbmail dentro de outro Proc dentro das transações do que não recebi o email. O SQL Server mostra na janela de resultado que "email na fila", mas eu nunca a recebo.

Comece a transação

Declarar @err int declarar @test nvarchar (max)

Raaiserror ('This Is A Test', 16, 1) Selecione @err = @@ Erro

Se @err <> 0 começar

Definir @Test = Error_Message ()

EXEC msdb.dbo.sp_send_dbmail
@destinaties = 'mails@mail.net',
@body = 'teste dentro',
@subject = 'erro com proc',
@body_format = 'html',
@append_query_error = 1,
@profile_name = 'Profile de correio de banco de dados';

Rollback Transaction Return End

Cometer transação

E eu recebo resultado como

MSG 50000, Nível 16, Estado 1, Linha 7
Isto é um teste
Mail na fila.

Foi útil?

Solução

Você o rendeu para que nunca saiu, coloque o código de e -mail fora da transação

De livros on -line

Ao executar o SP_SEND_DBMAIL de dentro de uma transação existente, o Mail Mail depende do usuário para confirmar ou reverter quaisquer alterações. Não inicia uma transação interna.

http://msdn.microsoft.com/en-us/library/ms190307.aspx

Outras dicas

Você precisa criar um SavePoint, tentar sua operação, em caso de reversão de erros para o SalvePoint, enviar a mensagem de correio e se comprometer. Semelhante ao padrão descrito em Manuseio de exceção e transações aninhadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top