Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie sp_send_dbmail ausgeführt wird, während die Berechtigungen eingeschränkt werden

Ihr Ansatz ist in Ordnung, aber Ihr Wrapper-Proc muss sich in der msdb-Datenbank befinden. Dann führen Sie "EXEC msdb.dbo._TestSendMail"

aus

Dies lässt immer noch das Problem der Berechtigungen für dbo._TestSendMail in msdb. Aber public/EXECUTE wird ausreichen:es legt nur die 3 Parameter offen, die Sie benötigen.

Fügen Sie im Zweifelsfall WITH ENCRYPTION hinzu. Dies ist gut genug, um jeden ohne Sysadmin-Rechte daran zu hindern, den Code anzuzeigen

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