Sql server 在SQL Server 2008 R2 Express中发送SMTP邮件

Sql server 在SQL Server 2008 R2 Express中发送SMTP邮件,sql-server,Sql Server,我尝试使用:sp_send_dbmail 但我得到了以下错误: 味精15281,16级,状态1, 程序sp_send_dbmail,第0行 SQL Server阻止了对过程的访问 组件的“dbo.sp_send_dbmail” “数据库邮件XPs”,因为 组件作为组件的一部分关闭 此服务器的安全配置 服务器。 系统管理员可以 启用“数据库邮件XPs”的使用 通过使用sp_配置。更多 有关启用“数据库”的信息 邮寄XPs”,见“表面积” SQL Server书籍中的“配置” 在线 我还尝试使用以下

我尝试使用:sp_send_dbmail

但我得到了以下错误:

味精15281,16级,状态1, 程序sp_send_dbmail,第0行
SQL Server阻止了对过程的访问 组件的“dbo.sp_send_dbmail” “数据库邮件XPs”,因为 组件作为组件的一部分关闭 此服务器的安全配置 服务器。
系统管理员可以 启用“数据库邮件XPs”的使用 通过使用sp_配置。更多 有关启用“数据库”的信息 邮寄XPs”,见“表面积” SQL Server书籍中的“配置” 在线

我还尝试使用以下代码在SQL Server 2008 R2 EXPRESS中发送SMTP邮件:

但我得到了以下错误:

味精15281,16级,状态1, 程序sp_OACreate,第1行
SQL Server阻止了对过程的访问 “组件”Ole的“sys.sp_OACreate” “自动化程序”因为 组件作为组件的一部分关闭 此服务器的安全配置 服务器。系统管理员可以 启用“Ole自动化”的使用 通过使用sp_configure执行“过程”。对于 有关启用“Ole”的详细信息 自动化程序”,参见“表面 SQL Server中的“区域配置” 在线图书

我去了“Facets”查看那里的安全选项,但是没有关于“表面积配置”的内容!是否因为我使用的是SQLServer2008R2的Express版本而丢失了它?还是我走错了方向


如果您对在SQL Server 2008中发送邮件有任何更好的代码/建议,请告诉我。谢谢

事实证明,SQL Server 2008 R2 EXPRESS edition不支持任何邮件功能。

我知道问题是针对EXPRESS的,但请注意,下面是如何为正确的SQL Server(SQL Server 2008 R2)执行的操作:

  • 连接到management studio中的服务器
  • 右键单击服务器
  • 单击“面”
  • 在镶嵌面下拉列表中,选择“表面积配置”
  • 双击“DatabaseMailEnabled”行将其设置为“True

第1阶段:右键单击ssms中的sql server 2008r2 express/选择facets/选择表面区域配置/设置DatabaseMailEnabled->true/单击确定。重新启动服务器

第2阶段: 您只需要在msdb中配置一些表。以下是需要配置的表:

  • sysmail_帐户->创建默认邮件帐户
  • sysmail\u profile->创建默认配置文件(您需要将此配置文件与sp\u send\u dbmail一起使用)
  • sysmail_profileaccount->根据2个配置文件id将相关数据添加到此
  • sysmail_服务器->从您的电子邮件帐户创建一个邮件服务器,您将使用它发送电子邮件。如果您不知道服务器类型,请查看sysmail_服务器类型
  • 更新这些表后,请刷新msdb并尝试使用sp_send_dbmail发送电子邮件 如果遵循所有这些步骤,您将能够使用sp_send_dbmail在sql 2008 r2 express中发送电子邮件。 我做了5次测试,结果很顺利

    塔利奥罗 罗利
    talleyouro@hotmail.com请执行以下脚本:

    sp_configure 'show advanced options', 1 
    GO 
    RECONFIGURE; 
    GO 
    sp_configure 'Ole Automation Procedures', 1 
    GO 
    RECONFIGURE; 
    GO 
    sp_configure 'show advanced options', 1 
    GO 
    RECONFIGURE;
    

    由于Tanmaya Thopate的功劳,下面是一些在Windows Server 2008上的SQL Express中工作的东西:

    EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name = 'MyMail',
    @description = 'Mail account for Database Mail',
    @email_address = 'sender@domain.com',
    @display_name = 'Me',
    @username='myaccount@gmail.com',
    @password='Password',
    @mailserver_name = 'smtp.gmail.com'
    
    邮件将通过您的帐户通过gmail发送myaccount@gmail.com

    现在创建一个配置文件:

    EXECUTE msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'MyMailProfile',
    @description = 'Profile needed for database mail'
    
    将配置文件链接到邮件

    EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'MyMailProfile',
    @account_name = 'MyMail',
    @sequence_number = 1
    
    
    EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'MyMailProfile',
    @principal_name = 'public',
    @is_default = 1 ;
    
    确保启用SSL,否则Gmail将投诉

    use msdb
    UPDATE sysmail_server 
    SET enable_ssl = 1
    
    并通过以下方式发送邮件:

    declare @body1 varchar(100)
    set @body1 = 'Server :'+@@servername+ ' Test DB Email SSL '
    EXEC msdb.dbo.sp_send_dbmail @recipients='me@mywork.co.za',
    @subject = 'Test',
    @body = @body1,
    @body_format = 'HTML' ;
    
    您可以从以下位置查看日志:

    SELECT * FROM msdb.dbo.sysmail_event_log order by log_date
    

    工作很愉快。不错!在使用SQL Express设置DataBaseMailEnabled=trueWorked for me之后,我不需要重新启动Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)答案应包含有关实际执行的操作、问题所在的更多信息,而不仅仅是“执行此”解决方案。