Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eseguire sp_send_dbmail limitando le autorizzazioni

Il tuo approccio è OK, ma il tuo wrapper proc deve essere nel database msdb. Quindi, esegui "EXEC msdb.dbo._TestSendMail"

Questo lascia comunque il problema dei permessi su dbo._TestSendMail in msdb.Ma public/EXECUTE sarà sufficiente:espone solo i 3 parametri di cui hai bisogno.

In caso di dubbio, aggiungere CON CRITTOGRAFIA. Questo è abbastanza buono da impedire a chiunque non abbia i diritti di amministratore di sistema di visualizzare il codice

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