代码之家  ›  专栏  ›  技术社区  ›  Mr.J

执行SP\u SEND\u MAIL的权限不工作?

  •  0
  • Mr.J  · 技术社区  · 6 年前

    我正在尝试从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 回复  |  直到 6 年前
        1
  •  2
  •   Mr.J    6 年前

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

    首先我读了这个 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
    

    效果不错。。。但是,将数据库设置为 后果如何?请注意这只是一个内部网络项目。

        2
  •  0
  •   Community CDub    4 年前

    sa ,我看到的唯一问题是权限。尝试为添加相同的权限 南非 用户到您的用户 msdb

    enter image description here

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

    对于任何用户,请确保 server roles public & sysadmin User Mapping 也被选为 试图从中执行存储过程的表。