Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment exécuter sp_send_dbmail tout en limitant les autorisations

Votre approche est OK, mais votre wrapper proc doit être dans la base de données msdb.Ensuite, vous exécutez "EXEC msdb.dbo._TestSendMail"

Cela laisse toujours le problème des permissions sur dbo._TestSendMail dans msdb.Mais public/EXECUTE suffira :il n'expose que les 3 paramètres dont vous avez besoin.

En cas de doute, ajoutez AVEC CRYPTAGE. C'est assez bon pour empêcher toute personne sans droits d'administrateur système de voir le code

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