Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да изпълним sp_send_dbmail, като ограничим разрешенията

Вашият подход е ОК, но вашата процедура за обвивка трябва да е в базата данни msdb. След това изпълнявате "EXEC msdb.dbo._TestSendMail"

Това все още оставя проблема с разрешенията за dbo._TestSendMail в msdb. Но public/EXECUTE ще бъде достатъчно:той излага само 3-те параметъра, от които се нуждаете.

Ако се съмнявате, добавете С ШИФРОВАНЕ. Това е достатъчно, за да спре всеки без права на системен администратор да преглежда кода

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е най-добрият начин за групови вмъквания в база данни от C#?

  2. Как да разделяте CSV от една колона на редове в нова таблица в MSSQL 2008 R2

  3. Случаен запис от таблица на база данни (T-SQL)

  4. Защо изпълнението на този Sql оператор (с 2 свързвания на таблици) отнема 5 минути?

  5. Типът данни „ПАРИ“ на SQL Server е десетична плаваща запетая или двоична плаваща запетая?