View a markdown version of this page

在 Amazon RDS for SQL Server 上使用数据库邮件 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

在 Amazon RDS for SQL Server 上使用数据库邮件

您可以使用数据库邮件从 Amazon RDS on SQL Server 数据库实例向用户发送电子邮件。这些消息可以包含文件和查询结果。数据库邮件包括以下组件:

  • 配置和安全对象 – 这些对象可以创建配置文件和账户,并存储在 msdb 数据库中。

  • 消息收发对象 – 这些对象包括用于发送消息的 sp_send_dbmail 存储过程以及保存有关消息信息的数据结构。相关内容均存储在 msdb 数据库中。

  • 日志记录和审计对象 – 数据库邮件将日志记录信息写入 msdb 数据库和 Microsoft Windows 应用程序事件日志中。

  • 数据库邮件可执行文件 – DatabaseMail.exe 读取 msdb 数据库中的队列并发送电子邮件。

RDS 在 Web 版、标准版和企业版上支持所有 SQL Server 版本的数据库邮件。

限制

以下限制适用于在 SQL Server 数据库实例上使用数据库邮件:

  • SQL Server 精简版不支持数据库邮件。

  • 不支持修改数据库邮件配置参数。如欲查看预设(默认)值,请使用 sysmail_help_configure_sp 存储过程。

  • 不完全支持文件附件。有关更多信息,请参阅“使用文件附件”。

  • 文件附件的最大大小为 1 MB。

  • 数据库邮件需要对多可用区数据库实例进行额外配置 有关更多信息,请参阅“多可用区部署的注意事项”。

  • 不支持将 SQL Server Agent 配置为向预定义运算符发送电子邮件。

数据库邮件的 Amazon RDS 存储过程和函数

Microsoft 提供存储过程用于使用数据库邮件,例如创建、列出、更新和删除帐户和配置文件。此外,RDS 还提供了数据库邮件的存储过程和函数,如下表所示。

过程/功能 描述
rds_fn_sysmail_allitems 显示已发送的消息,包括其他用户提交的消息。
rds_fn_sysmail_event_log 显示事件,包括其他用户提交的消息事件。
rds_fn_sysmail_mailattachments 显示附件,包括其他用户提交的消息附件。
rds_sysmail_control 启动和停止邮件队列(DatabaseMail.exe 进程)。
rds_sysmail_delete_mailitems_sp 从数据库邮件内部表中删除所有用户发送的电子邮件。

使用文件附件

在 SQL Server 上,来自 RDS 的数据库邮件消息不支持以下文件扩展名:.ade、.adp、.apk、.appx、.appxbundle、.bat、.bak、.cab、.chm、.cmd、.com、.cpl、.dll、.dmg、.exe、.hta、.inf1、.ins、.isp、.iso、.jar、.job、.js、.jse、.ldf、.lib、.lnk、.mde、.mdf、.msc、.msi、.msix、.msixbundle、.msp、.mst、.nsh、.pif、.ps、.ps1、.psc1、.reg、.rgs、.scr、.sct、.shb、.shs、.svg、.sys、.u3p、.vb、.vbe、.vbs、.vbscript、.vxd、.ws、.wsc、.wsf 和.wsh。

数据库邮件使用当前用户的 Microsoft Windows 安全环境来控制对文件的访问。使用 SQL Server 身份验证登录的用户无法使用带 @file_attachments 存储过程的 sp_send_dbmail 参数来附加文件。Windows 不允许 SQL Server 从一台远程计算机向另一台远程计算机提供凭证。因此,当命令从运行 SQL Server 的计算机以外的计算机运行时,数据库邮件无法从网络共享中的附加文件。

但是,您可以使用 SQL Server Agent 作业来附加文件。有关 SQL Server Agent 的详细信息,请参阅 Microsoft 文档中的 使用 SQL Server Agent for Amazon RDS 和 SQL Server Agent。

多可用区部署的注意事项

在多可用区数据库实例上配置数据库邮件时,配置不会自动传播到辅助节点。我们建议将多可用区实例转换为单可用区实例,配置数据库邮件,然后将数据库实例转换回多可用区实例。然后,主节点和辅助节点都具有数据库邮件配置。

如果您从配置了数据库邮件的多可用区实例中创建只读副本,则副本将继承配置,但不会向 SMTP 服务器提供密码。使用密码更新数据库邮件账户。

删除 SMTP(端口 25)限制

默认情况下,Amazon 会阻止 RDS for SQL Server 数据库实例的 SMTP(端口 25)上的出站流量。这样做是为了根据弹性网络接口所有者的策略来阻止垃圾邮件。如果需要,您可以删除此限制。有关更多信息,请参阅如何删除 Amazon EC2 实例或 Lambda 函数的端口 25 的限制?。