对SP_SEND_MAIL的执行权限不起作用?

时间:2018-09-07 03:24:29

标签: sql sql-server sp-send-dbmail

我很谦虚地要求您提供有关此事的指导。

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

在连接字符串中使用“ SA”登录名时,我可以执行代码,没问题,但是如果没有,我会收到此错误

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

因此,我在此站点和其他站点中进行了搜索,指出要向不执行命令的帐户添加权限到DatabaseMailUserRole。

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

这是我所做的操作的屏幕截图。

enter image description here 授予执行权

enter image description here

enter image description here

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

                    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

2 个答案:

答案 0 :(得分:1)

所以,请告诉我我做错了还是什么。

首先我读了这个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 是否会产生后果?请注意,这只是一个内部网络项目。

答案 1 :(得分:0)

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

enter image description here

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

对于任何用户,请确保msdb拥有server roles publicsysadmin,并且还为User Mapping表中选择了msdb尝试执行存储过程。