Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Anderson Vasconcelos

Envio de e-mails SQL Server 2008 R2

Recommended Posts

Prezados,

Hoje me deparei com o seguinte problema tenho um usuário de banco que envia e-mails com anexo, porem para que isso ocorra o mesmo tem que está habilitado como sysadmin.

 

Alguém sabe quais são as permissões especificas para que o mesmo continue enviando e-mails com anexo sem ser sysadmin?

 

Desde já agradeço o apoio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que está estranho na sua dúvida, é que não importa se o usuário é administrador ou não. Se no seu sistema você quer que envie e-mails ele vai fazer isso independente de banco de dados.

Se o seu usuário estivesse com problema de permissão ele também não deverá conseguir logar no sistema.

 

Se você colocar um e-mail fixo e tentar enviar para esse e-mail sem ler no banco você consegue?

 

De mais alguns detalhes do ambiente pra gente poder te dar uma força.

 

Posta ai se conseguir resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que está estranho na sua dúvida, é que não importa se o usuário é administrador ou não. Se no seu sistema você quer que envie e-mails ele vai fazer isso independente de banco de dados.

Se o seu usuário estivesse com problema de permissão ele também não deverá conseguir logar no sistema.

 

Se você colocar um e-mail fixo e tentar enviar para esse e-mail sem ler no banco você consegue?

 

De mais alguns detalhes do ambiente pra gente poder te dar uma força.

 

Posta ai se conseguir resolver.

 

Depende.

Se ele tiver tentando mandar email pelo DB com o xp_sendmail as permissões são herdadas do usuário do SQL. O que se pode fazer nestes casos é uma procedure que a chama e dar permissão de execute.

Precisa ser sysadmin pelo fato de mexer com anexos de arquivos, salvar resultados no disco e outras funções a mais.

 

Em tempo:

No link que postei esta escrito:

Requer associação na função de servidor fixa sysadmin, mas permissões EXECUTE podem ser concedidas a outros usuários. Mas, por razões de segurança, é recomendável que as permissões desse procedimento armazenado sejam limitadas aos membros da função de servidor fixa sysadmin.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende.

Se ele tiver tentando mandar email pelo DB com o xp_sendmail as permissões são herdadas do usuário do SQL. O que se pode fazer nestes casos é uma procedure que a chama e dar permissão de execute.

Precisa ser sysadmin pelo fato de mexer com anexos de arquivos, salvar resultados no disco e outras funções a mais.

 

Em tempo:

No link que postei esta escrito:

 

É verdade, com certeza deve ser isto que ele está usando. A procedure resolveria neste caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende.

Se ele tiver tentando mandar email pelo DB com o xp_sendmail as permissões são herdadas do usuário do SQL. O que se pode fazer nestes casos é uma procedure que a chama e dar permissão de execute.

Precisa ser sysadmin pelo fato de mexer com anexos de arquivos, salvar resultados no disco e outras funções a mais.

 

Em tempo:

No link que postei esta escrito:

A.Jr existe algum outra maneira? e se utilizar credencial?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Credencial tb não vai resolver. Eu não sei a complexidade dos emails que esta enviando e varia mto de ambiente para ambiente, mas pq nao tenta dar uma permissão de EXECUTE para esta procedure?

 

Requer associação na função de servidor fixa sysadmin, mas permissões EXECUTE podem ser concedidas a outros usuários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Credencial tb não vai resolver. Eu não sei a complexidade dos emails que esta enviando e varia mto de ambiente para ambiente, mas pq nao tenta dar uma permissão de EXECUTE para esta procedure?

 

[/color]

 

para você dar permissão na procedure basta fazer isso:

USE teu_banco; 
GRANT EXECUTE ON sua_procedure
   TO O_tal_usuario;
GO

 

mas tem que ver se o user está associado a um grupo de permissão senão tem que usar:

exec sp_helprotect @name = 'nome_da_procedure'

se não me engano é assim.

Faz um teste pra ver como se comporta e diz pra gente o que houve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Credencial tb não vai resolver. Eu não sei a complexidade dos emails que esta enviando e varia mto de ambiente para ambiente, mas pq nao tenta dar uma permissão de EXECUTE para esta procedure?

 

[/color]

A.Jr

Somente para que você possa entender melhor.

Tenho uma Store procedure x que dentro dela tem a chamada EXECUTE msdb..sp_send_dbmail.

Já dei permissão para executar a Store Procedure sp_send_dbmail e coloquei o usuário como membro da função DatabaseMailUserRole.

 

O real problema está no seguinte fato, se mando apenas e-mail funciona, porem se tento enviar um e-mail com anexo da a mensagem de erro:

Msg 22051, Level 16, State 1, Line 0

The client connection security context could not be impersonated. Attaching files require an integrated client login

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que voce tentou isso:

http://msdn.microsof...y/ms187911.aspx

 

Porém, você pode tentar isso:

* Crie 1 login como sysadmin (se necessário)

* Faça o impersonate

 GRANT IMPERSONATE[/b] ON login:: [login_sysadmin] TO [login_destino];  

 

 

* Adicione em sua procedure

 

create proc XXX_.... -- SUA PROCEDURE

AS

...

EXECUTE AS login = 'login_sysadmin' -- seta o login com sysadmin

exec SP_SEND_DBMAIL .....

REVERT

* de GRANT de execute na procedure para o usuario destino

 

Se não enteder nada disso de uma olhada neste LINK

 

Fiz o teste em um ambiente com o SQL2008R2, mas funciona também no SQL2008.

 

Você também pode criptografar o conteúdo da procedure para os desenvolvedores não verem os comandos.

 

Abçs

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.