如何为 SQL Server 用户授予 sendmail 权限?

12

我有一个数据库用户,它是数据库的所有者。应用程序要求使用SQL Server的数据库邮件发送邮件。

有没有办法只向该用户授予发送邮件权限?

我有一个名为testuser的用户,具有服务器角色公共db_owner,用于1个数据库。请告诉我不需要给该用户sysadmin服务器角色的方法。

3个回答

15
请尝试以下两个选项。
USE msdb;
--add our user
CREATE USER  ClarkKent FOR LOGIN  ClarkKent; 
--give this user rights to use dbmail
exec sp_addrolemember 'DatabaseMailUserRole', 'ClarkKent'

现在,如果我们知道ClarkKent正在从一个Windows组获取授权,那么您可以将该Windows组添加为用户,并将该组添加到相同的角色中。

USE msdb;
--add our user via a group we know he is in 
CREATE USER 'mydomain\BusinessGroup' FOR LOGIN   'mydomain\BusinessGroup'; 
--give this GROUP rights to use dbmail
exec sp_addrolemember 'DatabaseMailUserRole', 'mydomain\BusinessGroup'

请使用“代码示例”图标突出显示文本并将其格式化为代码。代码示例图标类似于{} - Mike Sherrill 'Cat Recall'
我已经尝试过了,但仍然无法使用数据库邮件服务。 - Nitesh Kumar
1
我收到以下信息:在对象'sysmail_help_profile_sp'上拒绝了EXECUTE权限,数据库为'msdb',模式为'dbo'。 (.Net SqlClient Data Provider) - Nitesh Kumar

4

enter image description here

你需要为MSDB数据库的用户添加“DatabasemailUserRole”。

3

在将邮件配置添加到数据库邮件角色后,您需要为登录名(或角色)分配该配置。对于下面的脚本,可能需要设置默认值为1而不是0。

use msdb
exec sp_addrolemember 'DatabaseMailUserRole', 'sqlUser'

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
@principal_name = 'sqlUser',  
@profile_name = 'sqlMailProfileName',
@is_default = 0 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接