Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como executar sp_send_dbmail enquanto limita as permissões


Sua abordagem está correta, mas seu proc wrapper deve estar no banco de dados msdb. Então, você executa "EXEC msdb.dbo._TestSendMail"

Isso ainda deixa a questão das permissões no dbo._TestSendMail no msdb. Mas public/EXECUTE será suficiente:ele expõe apenas os 3 parâmetros que você precisa.

Em caso de dúvida, adicione WITH ENCRYPTION. Isso é bom o suficiente para impedir que qualquer pessoa sem direitos de administrador do sistema visualize o código
USE msdb
GO
CREATE PROCEDURE [dbo].[_TestSendMail]
(
  @To NVARCHAR(1000),
  @Subject NVARCHAR(100),
  @Body NVARCHAR(MAX)
)
-- not needec WITH EXECUTE AS OWNER
AS 
    BEGIN
        EXEC dbo.sp_send_dbmail @profile_name = N'myProfile',
            @recipients = @To, @subject = @Subject, @body = @Body
    END