sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo ejecutar sp_send_dbmail mientras se limitan los permisos

Su enfoque está bien, pero su proceso contenedor debe estar en la base de datos msdb. Luego, ejecuta "EXEC msdb.dbo._TestSendMail"

Esto aún deja el problema de los permisos en dbo._TestSendMail en msdb. Pero public/EXECUTE será suficiente:solo expone los 3 parámetros que necesita.

En caso de duda, agregue CON CIFRADO. Esto es lo suficientemente bueno para evitar que cualquier persona sin derechos de administrador de sistemas vea el 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