数据库邮件

简介:

SQL Server数据库邮件使用 SMTP 服务器转发邮件,允许用户配置数据库邮件,并通过存储过程 msdb.dbo.sp_send_dbmail 向特定的用户发送邮件,邮件的格式可以是文本、Excel、或HTML。数据库邮件的最大用处是向数据库运维人员及时发送异常信息,当数据库出现异常时,数据库系统可以在第一时间发送邮件通知数据库运维人员,这样便于尽快排除数据库运行的异常情况,保证数据库能够正常、持续地提供服务。 

一,配置数据库邮件

配置数据库邮件时,主要配置两个对象:Account 和 Profile,数据库账户(Account)包含SQL Server用于把邮件发送给SMTP 服务器的信息,包含外发(outgoing)的邮件地址,显示名(Display Name)以及使用SMTP服务器地址;每一个account包含一个SMTP 服务器。数据库邮件配置(Profile)是账户(Account)的有序集合,存储过程 msdb.dbo.sp_send_dbmail 或SQL Server Agent 使用Profile发送邮件,而不是直接使用Account。Profile提供邮件发送服务的自动故障转移(failover),由于一个Profile包含多个Account,当第一个Account出现故障时,Profile自动使用后续的Account发送邮件,实现邮件发送的自动故障转移。当SMTP服务器变更时,DBA只需要修改Account,而不需要修改Profile,使得编程更加灵活和可靠。

下面的示例图展示数据库邮件的配置:3个Account,2个Profile,每个Profile都包含2个Account,

1,打开配置数据库邮件的向导

在SSMS的Management目录中,右击“Database Mail”弹出快捷菜单,点击“Configure Database Mail”,打开数据库邮件配置向导 “Database Mail Configuration Wizard”,在向导界面上,选择“Set up Database Mail by performing the following tasks”选项,点击“Next”按钮,开始配置数据库邮件:

2,创建数据库邮件配置(Profile)

在发送数据库邮件之前,必须创建数据库邮件的配置(Profile),在配置中指定:邮件服务器(SMTP Server)的账户,一个数据库邮件配置可以包含多个SMTP 账户,点击“Add”按钮,添加SMTP Account:

3,配置SMTP账户

配置新添加的SMTP Account,配置数据库邮件的发送地址(E-mail Address)及其显示名称(Display Name),邮件服务器的地址(在Server Name中填写邮件服务器的URL,在Port Number中填写端口号),和身份验证(SMTP Authentication)信息:

在配置Account时,有三种SMTP验证方式,分别是Windows域账户验证、基本验证(用户名和密码)、匿名验证,大多数STMP服务器都需要账户登陆,很少有匿名验证方式。

4,设置默认的Profile

如果设置了默认的Profile,执行msdb.dbo.sp_send_dbmail 时不需要@profile_name显式指定配置名称:

5,发送测试邮件

数据库邮件(Database Mail)自带有"Send Test E-Mail"和“View Database Mail Log”的功能,用来查看Database mail的发送情况。

 二,使用TSQL语句发送mail

1,使用 msdb.dbo.sp_send_dbmail 发送mail,由于设置了default profile,所以不需要显示使用@Profile_Name来指定Profile。

EXEC msdb.dbo.sp_send_dbmail
    @recipients='xxx@domainname.com'
    ,@subject='Test email subject'
    ,@body='test email body'
    --,@profile_name='default'

使用msdb.dbo.sp_send_dbmail也能发送HTML格式的mail,需要在参数@body_format指定格式。
[ @body_format= ] 'body_format'

默认值是Text,表示发送的是邮件正文是text格式;HTML格式,可以使用HTML 标签

2,发送text格式的邮件

复制代码
EXEC msdb.dbo.sp_send_dbmail
    @recipients='xxx@domainname.com'
    ,@subject='Test email subject'
    ,@body='test email body'
    --,@profile_name='default_ProfileName'
    --,@body_format='text'
复制代码

@Body_Format 参数的默认值是Text

3,发送Html格式的mail

复制代码
declare @htmlbody varchar(max)
set @htmlbody='<table>
<tr>
    <td>first row</td>
</tr>
<tr>
    <td>second row</td>
</tr>
</table>'

EXEC msdb.dbo.sp_send_dbmail
    @recipients='xxx@domainname.com'
    ,@subject='Test email subject'
    ,@body=@htmlbody
    --,@profile_name='default_ProfileName'
    ,@body_format='Html'
复制代码

4,将查询结果作为mail的body

存储过程 msdb.dbo.sp_send_dbmail 可以执行一个select 查询子句,并将查询结果作为一个附件发送出去。

复制代码
EXEC msdb.dbo.sp_send_dbmail
    @recipients='xxx@domainname.com'
    ,@subject='Test email subject'
    --,@profile_name='default_ProfileName'
    --,@body_format='text'
    ,@query='select * from db_study.dbo.test'
    ,@attach_query_result_as_file = 1
复制代码

 

参考文档:

sp_send_dbmail (Transact-SQL)

作者悦光阴
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。
分类: 数据库管理
标签: 数据库邮件

本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/4552683.html,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Shell Linux 数据库
【Shell 命令集合 网络通讯 】Linux 更新邮件别名数据库 newaliases命令 使用指南
【Shell 命令集合 网络通讯 】Linux 更新邮件别名数据库 newaliases命令 使用指南
56 1
|
监控 安全 前端开发
zabbix数据库分离和邮件报警
zabbix数据库分离和邮件报警
106 0
|
SQL IDE 关系型数据库
Python2连接Mysql数据库并发送带附件的邮件
使用python连接mysql数据库读取数据,并发送带附件邮件
227 0
Python2连接Mysql数据库并发送带附件的邮件
|
SQL IDE 关系型数据库
Python2连接Mysql数据库并发送带附件的邮件
公司运营小姐姐经常让我给她拉数据,为了避免重复工作,就搞了这个脚本。所以就有了这篇文章。
385 0
Python2连接Mysql数据库并发送带附件的邮件
|
Linux 数据库
邮件服务别名数据库设置指南
使用 Linux 服务器的时候,我们经常需要转发邮件,最简单的方案就是使用别名。以下简单介绍 sendmail 的别名数据库配置。这些配置也同样适用于兼容 sendmail 的其他邮件服务,例如 postfix。
283 0
邮件服务别名数据库设置指南
|
SQL 监控 数据库
利用数据库邮件服务实现监控和预警
原文:利用数据库邮件服务实现监控和预警 背景     现在越来越多的企业、公司要求对于数据库实现7*24小时的数据库监控,一般情况下采用的就是第三方的平台来实现邮件和手机短信的监测提醒。前几日公司新上了一台服务器,急于部署程序还没来得及搭建其他相关平台,为了更好的监控数据库,暂时用SQL Server自带的邮件服务来实现对数据库的监控和预警。
2295 0

热门文章

最新文章