本文转自:http://www.cnblogs.com/gaizai/p/3358958.html

一、 背景

数据库发邮件通知数据库的运行状态(状态可以通过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)

-------------------华丽分割线-------------------

作者:听风吹雨

出处:http://gaizai.cnblogs.com/

版权:本文版权归作者和博客园共有

转载:欢迎转载,必须保留原文链接

邮箱:gaizai@126.com

格言:不喜欢是因为你不会 && 因为会所以喜欢

-------------------华丽分割线-------------------

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

  1. SQL Server 创建数据库邮件

    一. 背景 数据库发邮件通知数据库的运行状态(状态可以通过JOB形式获取)和信息,达到预警的效果. 二. 基础知识 msdb系统数据库保存有关Job,Database Mail,Nodifyicati ...

  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. HIbernate学习笔记4 之 延迟加载和 关联映射

    一.延迟加载 * 在使用hibernate一些方法的查询数据的时候,返回的只是一个空对象(除id外属性都为NULL),并没有真正的查询数据库,而是在使用这个对象时才会触发查询数据库,并将这些数据注入到 ...

  2. http请求数据的格式

    最近看了tinyhttpd的服务器代理,看了看http请求数据包的格式和内容 http请求报包含三个部分: 请求行 + 请求头 + 数据体 请求行包含三个内容 method + request-URI ...

  3. Java中的原子操作类

    转载: <ava并发编程的艺术>第7章 当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可 ...

  4. Python Flask 蓝图Blueprint

    1. 目录结构 2. manage.py类似于django中manage import fcrm if __name__ == '__main__': fcrm.app.run(port=8001) ...

  5. 从徐飞的文章《Web应用的组件化开发(一)中窥视web应用开发的历史

    Web应用的组件化开发(一) 原文来自 徐飞 基本思路 1. 为什么要做组件化? 无论前端也好,后端也好,都是整个软件体系的一部分.软件产品也是产品,它的研发过程也必然是有其目的.绝大多数软件产品是追 ...

  6. [你必须知道的.NET]第二十七回:interface到底继承于object吗?

    发布日期:2009.03.05 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 在.NET世界里,我们常常听到的一句话莫过于“S ...

  7. 根据C# 事件思想来实现 php 事件

    事件定义 当我们使用委托场景时,我们很希望有这样两个角色出现:广播者和订阅者.我们需要这两个角色来实现订阅和广播这种很常见的场景. 广播者这个角色应该有这样的功能:包括一个委托字段,通过调用委托来发出 ...

  8. python 网络爬虫框架scrapy使用说明

    1 创建项目scrapy startproject tutorial 2 定义Itemimport scrapyclass DmozItem(scrapy.Item):    title = scra ...

  9. 一个Apache安装多个版本的PHP

    我的服务器centos6.5安装了xampp,php6.5版本的.已经有好几个网站在上面运行了,但是后面要安装该死的ecshop,无奈要装php5.2,因此就想如何能在一个apache上安装多个版本的 ...

  10. python队列、线程、进程、协程(转)

    原文地址: http://www.cnblogs.com/wangqiaomei/p/5682669.html 一.queue 二.线程 #基本使用 #线程锁 #自定义线程池 #生产者消费者模型(队列 ...