一、数据库邮件介绍

数据库邮件是从SQL Server数据库引擎中发送电子邮件的企业解决方案,通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件。邮件中可以包含查询结果,还可以包含来自网络中任何资源的文件。

数据库邮件使用标准的简单传输协议(SMTP)发送邮件。发送邮件进程与SQL Server隔离,在后台采用异步方式传递,以避免了对SQL Server的影响。邮件通过配置文件进行发送,配置文件中包含了邮件账号的详细信息,可配置多个配置文件,每个配置文件可包行多个账户,实现故障转移。

默认下数据库邮件是禁用的,只有在调用的时候开启;若要发送数据库邮件,必须是msdb数据库中的databasemailuserrole数据库角色成员。同时数据库会对已经发送的邮件保留副本,可随时查询。支持HTML格式发送。

二、数据库邮件配置

1、前期准备

准备两个邮件账号:账号;发件服务器;端口[ 默认25 ]。

确保在此服务器能用这两个账号发送邮件,连接外网。

2、数据库邮件配置过程

右键—配置数据库邮件—进入数据库邮件配置向导—下一步

默认下一步

输入“配置文件名称”—输入“配置文件的用途”—添加—新建账户

输入邮件账户等—输入邮件服务器信息—端口默认为25即可

输入登录帐户和密码

确定后配置第二个账户

下一步

选择公共配置文件和默认配置文件

确定系统参数:默认下一步

确定配置信息,下一步

配置完成—关闭

3、开启Database Mail XPs配置

SP_CONFIGURE 'show advanced', 1

GO

RECONFIGURE

GO

SP_CONFIGURE 'Database Mail XPs', 1

GO

RECONFIGURE

GO

4、发送测试邮件

右键—发送测试邮件

也可通过存储过程发送测试邮件

USE msdb

GO

EXEC sp_send_dbmail

@profile_name='sqlmonitor',--配置文件名称

@recipients='test1@fzcyjh.com',--发送邮件账号

@subject='数据库邮件测试',--主题

@body='这是从HUANGCHUANHUI 上的数据库邮件发出的测试电子邮件。'--内容

三、扩展知识

1、数据库邮件的主要组件

数据库邮件配置和安全对象:1、配置文件;2、账户;3、配置存储过程[sp_send_dbmail]。邮件账户包含电子邮件服务器的信息,邮件账户密码信息等;配置文件是多个账户的集合;配置文件同时提供自动故障转移,为了增强安全性,配置文件可以是公共的,也可以是专用的;若是公共的配置文件,只要拥有databasemailuserrole角色的成员即可调用;若为专用的,只能是制定的数据库用户才能使用,需要sysadmin授权。

Msdb数据库:是数据库邮件主机数据库,包含数据库邮件的存储过程和消息处理对象,必须在msdb中启用Service Broker。不过数据库邮件不使用Service Broker网络。

外部执行程序DatabaseMail.exe:当有电子邮件要处理时,数据库邮件使用 Service Broker 激活来启动该外部程序。启动后,使用windows身份验证连接到SQL Server处理电子邮件;如果无法与SQL Server通信,则将记录在windows应用程序事件日志中。

2、数据库邮件发送基本过程

下图为数据库邮件基本体系结构

数据库邮件的设计基于使用 Service Broker 技术的排队体系结构。

当用户执行 sp_send_dbmail 时,存储过程将向邮件队列中插入一项,并创建一条包含该电子邮件信息的记录。

在邮件队列中插入新项将启动数据库邮件外部进程 (DatabaseMail.exe)。该外部进程会读取电子邮件的信息并将电子邮件发送到相应的一台或多台电子邮件服务器。发送后,该外部进程还会在状态队列中插入一项,来指示发送操作的结果。在状态队列中插入新项将启动内部存储过程,该过程将更新电子邮件信息的状态。

除存储已发送(或未发送)的电子邮件信息外,数据库邮件还在系统表中记录所有电子邮件的附件。

只有 msdb 数据库中的 DatabaseMailUserRole 的成员可以执行 sp_send_dbmail

SQL Server数据库邮件配置的更多相关文章

  1. SQL SERVER 数据库邮件配置

    1.简单了解数据库邮件的概念和使用的传输协议及系统体系: 数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方案.通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中 ...

  2. SQL Server 数据库邮件 配置

    在 Sqlserver 上尝试配置 数据库邮件,用 smtp.qq.com 来发送邮件 如下配置后,发送测试邮件遇到错误 “由于邮件服务器故障,无法将邮件发送给收件人. (使用帐户 1 (2015-1 ...

  3. SQL Server数据库邮件发送异常案例

      最近遇到两起关于SQL Server数据库邮件发送异常的案例,这些问题也有点意思,顺便记录一下.方便以后遇到类似问题的人参考,不要被这些问题弄得抓狂! 案例1:我们一台数据库服务器突然发送邮件都不 ...

  4. Windows 2008服务器环境PHP连接SQL Server数据库的配置及连接方法

    背景: PHP程序常用的数据库是Mysql数据库,但是由于实际项目需要,要求PHP网站连接SQL Server数据库查询一些必要信息.因此,本文就来给大家介绍一下如何安装及配置PHP扩展,可以实现PH ...

  5. SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件

    原文:SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件 从2005开始,就引入了"数据库邮件"功能.并且取代SQLMail.原有SQLMail ...

  6. 在 SQL Server 2005 中配置数据库邮件

    一.            SQL Server发邮件原理和组件介绍: 数据库邮件有4个组件:配置文件.邮件处理组件.可执行文件以及“日志记录和审核组件”. l  配置组件包括: 1)数据库邮件帐户包 ...

  7. 【原创】SQL Server Job邮件详细配置

    1 简介 SQL Server 代理具有发送电子邮件的功能.您可以配置 SQL Server 代理邮件,使其在出现下列情况时向预定义的操作员发送电子邮件: 警报触发时.可以配置警报,以针对所发生的特定 ...

  8. 此操作只能由 SQL Server 中拥有配置数据库读取权限的用户在已加入到某个服务器场的计算机上执行

    错误提示:此操作只能由 SQL Server 中拥有配置数据库读取权限的用户在已加入到某个服务器场的计算机上执行.若要将此服务器连接到服务器场,请使用 SharePoint 产品配置向导,该向导可从 ...

  9. SQL Server数据库定时自动备份

    SQL Server 数据库定时自动备份[转]   在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...

随机推荐

  1. struts2 Advanced Learning

    catalog . 引言 . struts2的类型转换 . struts2的输入校验 . struts2的拦截器机制 . 使用struts2的Ajax支持 . struts2 OGNL表达式 . st ...

  2. Cacheable key collision with DefaultKeyGenerator

    The default is to use the hashcode of each parameter and create another (32-bit) hash code. Obviousl ...

  3. Mysql学习笔记(七)mysql编程基础之自定义函数。

    delimiter $$ create function fn_liangzifunction() returns int no sql begin ; return @row_no; end; $$ ...

  4. 看了汤姆大叔的“你真懂JavaScript吗?”的一些感慨

    看了汤姆大叔的“你真懂JavaScript吗?”,里面有5道题目,我都一一作了,然后在chrome的控制台里面运行了一遍,虽然只错了一道,但还是细细读了下答案,在此总结一下,看看是否对大家对这些Jav ...

  5. tail 命令 查看Tomcat目录下日志的最后几行的方法

    工作中需要查看日志信息,进行排错,但是面对上万行的错误日志,从头开始往后看,比较浪费时间,所有使用tail命令会节省不少时间. 1.命令   tail  - n  opt/tomcat/logs/ca ...

  6. php适配器设计模式

    <?php //适配器模式 //服务器端代码 class tianqi{ public static function show(){ $today= array('tep' =>28 , ...

  7. 中缀表达式转后缀表达式(用于求字符串表达式值)(js栈和队列的实现是通过数组的push和unshift方法插值,pop方法取值)

    中缀表达式:就是我通常用的算术或逻辑公式: 后缀表达式:不包含括号,运算符放在两个运算对象后面,所有的计算按运算符出现的顺序,严格从左向右进行,不用考虑运算符优先级: 如,(2+1)*3 转换后,2 ...

  8. 9月14日JavaScript循环语句作业解析

    1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米 解法一: var gd = 8848; var cs = 0; while(true) { cs++; gd = gd ...

  9. BigDecimal类

    如果需要精确的计算结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作. //========================================== ...

  10. Wget命令下载、备份博客

    -np http://www.cnblogs.com/memory4young/p/ 参考资料: http://www.cnblogs.com/memory4young/p/wget-backup-b ...