一、 背景

  数据库发邮件通知数据库的运行状态(状态可以通过JOB形式获取)和信息,达到预警的效果。

二、 基础知识

  msdb系统数据库保存有关Job,Database Mail,Nodifyication等等之类信息的。MSSQL2005之后的邮件功能,使用了Services Broker进行了队列处理。然后使用外部进程,这个可以在配置成功Mail以后查看任务管理器中的进程。

  另外 sp_send_dbmail是手动发送邮件的存储过程,我们必须显示的赋值才能发送。

三、 图形界面方式创建数据库邮件

下面就以SSMS的图形界面介绍如何创建数据库邮件;

(Figure1:数据库邮件)

(Figure2:以步骤形式创建)

(Figure3:创建配置文件名)

(Figure4:添加Email帐号)

这里设置的Email信息是表示之后就以这个Email帐号发送邮件,这里的服务器名称填写的是smtp.126.com,端口为25,你需要通过下面的方式测试这个地址是否可以访问。如果不通有可能是你机器防火墙的问题。

(Figure5:测试ping)

(Figure6:测试telnet)

(Figure7:配置文件与邮件对应关系)

这里你可以添加多个Email帐号,在失败的时候会使用下一个用户尝试发送。

(Figure8:公共配置文件)

(Figure9:系统尝试,不需要修改)

(Figure10:成功界面)

(Figure11:成功发送邮件)

四、 数据库邮件相关脚本

--脚本创建数据库邮件
--1.开启数据库邮件
EXEC sp_configure 'show advanced options',1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'database mail xps',1
RECONFIGURE WITH OVERRIDE
GO --2.创建邮件帐户信息
EXEC msdb..sysmail_add_account_sp
@ACCOUNT_NAME ='ETLErrorMailLog',--邮件帐户名称
@EMAIL_ADDRESS ='******@126.com',--发件人邮件地址
@DISPLAY_NAME ='系统管理员',--发件人姓名
@REPLYTO_ADDRESS =NULL,
@DESCRIPTION = NULL,
@MAILSERVER_NAME = 'SMTP.126.COM',--邮件服务器地址
@MAILSERVER_TYPE = 'SMTP',--邮件协议
@PORT =25,--邮件服务器端口
@USERNAME = '******@126.com',--用户名
@PASSWORD = '******',--密码
@USE_DEFAULT_CREDENTIALS =0,
@ENABLE_SSL =0,
@ACCOUNT_ID = NULL
GO --3.数据库配置文件
IF EXISTS(SELECT name FROM msdb..sysmail_profile WHERE name=N'ETLErrorProfileLog')
BEGIN
EXEC msdb..sysmail_delete_profile_sp
@profile_name='ETLErrorProfileLog'
END EXEC msdb..sysmail_add_profile_sp
@profile_name = 'ETLErrorProfileLog',--profile名称
@description = '数据库邮件配置文件',--profile描述
@profile_id = null
GO --4.用户和邮件配置文件相关联
EXEC msdb..sysmail_add_profileaccount_sp
@profile_name = 'ETLErrorProfileLog',--profile名称
@account_name = 'ETLErrorMailLog',--account名称
@sequence_number = 1--account 在profile 中顺序
GO --5.1发送简单文本的邮件
EXEC msdb..sp_send_dbmail
@profile_name = 'ETLErrorProfileLog',--profile名称
@recipients = '******@qq.com',--收件人
@subject = 'Test title this is test ',--邮件标题
@body = N'数据库邮件测试',--邮件内容
@body_format = 'HTML'--邮件格式
GO --5.2发送包含查询的邮件
EXEC msdb..sp_send_dbmail
@profile_name = 'ETLErrorProfileLog',
@recipients = '******@qq.com',
@subject = '查询结果',
@query = 'SELECT * FROM msdb.dbo.sysmail_faileditems'
GO --5.2发送包含附件的邮件
EXEC msdb..sp_send_dbmail
@profile_name = 'ETLErrorProfileLog',
@recipients = '******@qq.com',
@subject = '包含附件',
@body = '有附件,请查收',
@file_attachments = 'c:\a.txt'
GO --5.3发送查询作为附件的邮件
EXEC msdb..sp_send_dbmail
@profile_name = 'ETLErrorProfileLog',
@recipients = '******@qq.com',
@subject = '查询结果',
@body = '查询结果在附件中',
@query = 'SELECT * FROM msdb.dbo.sysmail_faileditems',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'a.txt'
GO

五、 参考文献

MSSQL数据库邮件系列二(SSMS和TSQL)

SQL Server:在 SQL Server 2005 中配置数据库邮件,发送邮件

SQL Server Reporting Services一步步实现邮件订阅

利用SQL SERVER2005发送邮件

SQL Server 监控系列 —— 一

祥解使用 SQL Server 2005/2008 发送数据库邮件

巧妙SQL Server设置 备份状态邮件通知

数据库邮件

数据库邮件消息处理对象

sp_send_dbmail (Transact-SQL)

SQL Server 创建数据库邮件的更多相关文章

  1. [转]SQL Server 创建数据库邮件

    本文转自:http://www.cnblogs.com/gaizai/p/3358958.html 一. 背景 数据库发邮件通知数据库的运行状态(状态可以通过JOB形式获取)和信息,达到预警的效果. ...

  2. SQL Server 创建数据库快照

    创建数据库快照: 必须在create database 命令中包括源数据库的每一个数据文件,原始逻辑名,新物理名与路径, 不能指定其他属性 create database db_snapshot_na ...

  3. SQL Server配置数据库邮件

    需求描述 在生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,可以以发邮件告知,邮件作为一种非常便利的预警实现方式,在及时性和易用性方面也有着不可替 ...

  4. SQL Server 创建数据库

    创建数据库有两种方式: 方式1-图形化界面创建: 1. 鼠标右击“数据库”,然后点击新建数据库 2.设置常规选项卡 2.1 给数据库命名,一般多个单词要用下划线连接,不建议用空格,如Test_DB. ...

  5. sql server 脚本创建数据库邮件

    sql server 脚本创建数据库邮件代码: --脚本创建数据库邮件 --1.开启数据库邮件 RECONFIGURE WITH OVERRIDE GO RECONFIGURE WITH OVERRI ...

  6. 如何创建和还原SQL Server 2005数据库?

    在还原SQL Server 2005数据库文件之前,建议先把要还原的数据库文件复制粘贴到某个盘的根目录下,这样便于一会儿找到相关的文件,比如C盘. 先打开SQL Server 2005的Microso ...

  7. 如何创建和还原SQL Server 2000数据库?

    说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,虽然现如今SQL Server 2000软件早已经过时了,但仍然有一部分人在使用它,尤 ...

  8. 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)

    在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...

  9. sql server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解

    介绍了sql server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解 --服务器角色: --固定服务器角色具有一组固定的权限,并且适用于整个服务器范围. 它们专门用于管理 SQL S ...

随机推荐

  1. CodeForces 618A Slime Combining

    http://www.codeforces.com/contest/618/problem/A 明明觉得是水题,而我却做了一个小时. 明明觉得代码没有错,而我却错了好几次. 因为我的名字不叫明明,也不 ...

  2. servlet中文乱码问题

    通过response对象向页面输出内容时遇到的乱码问题可分为两种情况 1.字节流 字节流输出时可以通过设置响应头"Content-Type"的值为"text/html;c ...

  3. Difference between WCF and Web API and WCF REST and Web Service

    The .Net framework has a number of technologies that allow you to create HTTP services such as Web S ...

  4. Linux下uniq命令的详解

           -c 在输出行前面加上每行在输入文件中出现的次数.  -d 仅显示重复行.       -u 仅显示不重复的行. 示例 1.去重,有多行一样的只显示一行cat 4.txt |sort - ...

  5. SpringMVC4零配置--web.xml

    servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitiali ...

  6. 反向传播(BP)算法

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:刘皮皮链接:https://www.zhihu.com/question/24827633/answer/29120394来源 ...

  7. WPF - 属性系统 (1 of 4)

    本来我希望这一系列文章能够深入讲解WPF属性系统的实现以及XAML编译器是如何使用这些依赖项属性的,并在最后分析WPF属性系统的实际实现代码.但是在编写的过程中发现对WPF属性系统代码的讲解要求之前的 ...

  8. Java多线程7:死锁

    前言 死锁单独写一篇文章是因为这是一个很严重的.必须要引起重视的问题.这不是夸大死锁的风险,尽管锁被持有的时间通常很短,但是作为商业产品的应用程序每天可能要执行数十亿次获取锁->释放锁的操作,只 ...

  9. 老司机学新平台 - Xamarin Forms开发框架之MvvmCross插件精选

    在前两篇老司机学Xamarin系列中,简单介绍了Xamarin开发环境的搭建以及Prism和MvvmCross这两个开发框架.不同的框架,往往不仅仅使用不同的架构风格,同时社区活跃度不同,各种功能模块 ...

  10. C语言 · 最小乘积(基本型)

    问题描述 给两组数,各n个. 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小.要求程序输出这个最小值. 例如两组数分别为:1 3 -5和-2 4 1 那么对应乘积取和的最小 ...