Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';sql server 2008上数据库邮件的服务器角色是什么?_Sql_Sql Server 2008_Database Mail - Fatal编程技术网

什么';sql server 2008上数据库邮件的服务器角色是什么?

什么';sql server 2008上数据库邮件的服务器角色是什么?,sql,sql-server-2008,database-mail,Sql,Sql Server 2008,Database Mail,我已经创建了一个帐户,并将服务器角色分配为public。 将数据库mydb上的用户映射指定为dbo,将msdb上的用户映射也指定为dbo 通过msdb上的用户映射设置,我检查了以下角色: DatabaseMailUserRole db_owner public 然后使用此帐户登录我的应用程序,并尝试使用数据库邮件配置文件发送电子邮件。 我得到的错误是: System.Data.SqlClient.SqlException: The EXECUTE permission was denied o

我已经创建了一个帐户,并将服务器角色分配为public。 将数据库mydb上的用户映射指定为dbo,将msdb上的用户映射也指定为dbo

通过msdb上的用户映射设置,我检查了以下角色:

DatabaseMailUserRole
db_owner
public
然后使用此帐户登录我的应用程序,并尝试使用数据库邮件配置文件发送电子邮件。 我得到的错误是:

System.Data.SqlClient.SqlException: The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
如果我将服务器角色sysadmin分配给此帐户。那么它工作得很好

但我不想将sysadmin分配给此帐户。如何解决这个问题

奇怪的是,我也在测试服务器上尝试过。该帐户即使不在msdb上的DatabaseMailUserRole中,也可以正常工作

2 sql服务器上唯一的区别是SMTP身份验证设置:
在测试箱上,设置为“基本身份验证”
在生产框上,设置为“使用数据库引擎服务凭据进行Windows身份验证”

你好,布里奇。谢谢运行EXEC msdb.dbo.sysmail_help_principalprofile_sp并在生产中获得以下信息:

principal_id    principal_name  profile_id  profile_name    is_default
11      guest       1       sqlservice  0
12      mydomainaccount 1       sqlservice  0

登台时,无结果。

若要发送数据库邮件,用户必须是msdb数据库中的用户,并且是msdb数据库中DatabaseMailUserRole数据库角色的成员。要将msdb用户或组添加到此角色,请使用SQL Server Management Studio,或对需要发送数据库邮件的用户或角色执行以下语句

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
    ,@membername = '<user or role name>';
GO
EXEC msdb.dbo.sp_addrolemember@rolename='DatabaseMailUserRole'
,@membername='';
去

来源:

要发送数据库邮件,用户必须是msdb数据库中的用户和msdb数据库中DatabaseMailUserRole数据库角色的成员。要将msdb用户或组添加到此角色,请使用SQL Server Management Studio,或对需要发送数据库邮件的用户或角色执行以下语句

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
    ,@membername = '<user or role name>';
GO
EXEC msdb.dbo.sp_addrolemember@rolename='DatabaseMailUserRole'
,@membername='';
去

来源:

谢谢。我确实在用户映射上的msdb上为此帐户设置了DatabaseMailRole。不确定为什么它仍然不起作用。您的用户有权访问邮件配置文件吗?以系统管理员的身份运行此命令,查看可以访问的用户列表:
EXEC msdb.dbo.sysmail\u help\u principalprofile\u sp谢谢。运行它并在生产中获得以下结果:主体\u id主体\u名称配置文件\u id配置文件\u名称为\u默认值11来宾1 sqlservice 0 12 mydomainaccount 1 sqlservice 0在登台时,无结果。谢谢。我确实在用户映射上的msdb上为此帐户设置了DatabaseMailRole。不确定为什么它仍然不起作用。您的用户有权访问邮件配置文件吗?以系统管理员的身份运行此命令,查看可以访问的用户列表:
EXEC msdb.dbo.sysmail\u help\u principalprofile\u sp谢谢。运行它并在生产上获得以下结果:主体\u id主体\u名称配置文件\u id配置文件\u名称为\u默认值11来宾1 sqlservice 0 12 mydomainaccount 1 sqlservice 0在转移时,无结果。