SP_SEND_MAIL 的执行权限不起作用?

Execute permission for SP_SEND_MAIL not working?

就此事恳请各位指点。

我正在尝试从 SQL 服务器执行存储过程。我在 VB.NET 应用程序中使用了它。

在连接字符串中使用 "SA" 登录时,我可以毫无问题地执行代码,但如果没有...我会收到此错误

The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.

所以,我在这个网站和其他网站上进行了搜索,指出要为 DatabaseMailUserRole 添加对命令未执行的帐户的权限。

我想我已经做到了,虽然没有使用这个 method

这是我所做的事情的屏幕截图。

批准执行

下面是我想在存储过程中运行的命令。

                    exec msdb.dbo.sp_send_dbmail 
                    @profile_name = 'SendSQLMail', 
                    @recipients = 'test@gmail.com', 
                    @blind_copy_recipients ='test2@gmail.com',
                    @subject = 'TESTS', 
                    @body =  "A SOMETHING",
                    @execute_query_database = '[FF]',
                    @body_format = 'text'

如果您需要有关我的工作的更多详细信息,请告诉我

编辑:

我想授予访问权限的用户名是 FF

如果它适用于 sa,我看到的唯一问题是权限。尝试为 sa 用户添加与 msdb 用户相同的权限。我正在添加屏幕截图以供参考。

这里我用黄色突出显示了所需的权限。

对于任何用户,请确保 msdbserver roles public & sysadmin 并且 User Mapping 也被选择为 msdb table 您正尝试从中执行存储过程。

所以,请告诉我,如果我做错了或什么..

首先我读了这个artice

GRANT EXECUTE ON object::sp_send_dbmail TO DatabaseMailUserRole

我得到了这段代码并尝试 运行 它,什么都没有发生,好吧,错误发生了。

那么最常见的解决方案:

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
    ,@membername = 'ff';
GO

也没用...

但是当我使用

ALTER DATABASE <mydatabase> SET TRUSTWORTHY ON

它运行良好...但是,将数据库设置为 TRUSTWORTHY 会产生后果吗?请注意这只是一个内部网络项目。