一、数据库邮件介绍

数据库邮件是从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. hihocoder 1356 分隔相同整数

    时间限制:10000ms单点时限:1000ms内存限制:256MB 描述 给定一个包含N个整数的数组A.你的任务是将A重新排列,使得任意两个相等的整数在数组中都不相邻. 如果存在多个重排后的数组满足条 ...

  2. (转载)最长递增子序列 O(NlogN)算法

    原博文:传送门 最长递增子序列(Longest Increasing Subsequence) 下面我们简记为 LIS. 定义d[k]:长度为k的上升子序列的最末元素,若有多个长度为k的上升子序列,则 ...

  3. CF 115B Lawnmower(贪心)

    题目链接: 传送门 Lawnmower time limit per test:2 second     memory limit per test:256 megabytes Description ...

  4. [JavaEE]如何唤醒Sleep中的线程

    主线程调用子线程的interrupt()方法,导致子线程抛出InterruptedException, 在子线程中catch这个Exception,不做任何事即可从Sleep状态唤醒线程,继续执行. ...

  5. django处理静态文件

    静态文件指的是js css 还有图片这些,配置方法如下 1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.staticfiles 然后设置 ...

  6. Raspberry Pi 3 --- identify the version of linux kernal file

    open it

  7. struts2文件目录结构

    apps 文件夹包含了多个 example 示例应用的压缩包. docs 文件夹包含了 struts 官方的帮助文档. lib 文件夹包含了 struts 提供的类库 jar 包. src 文件夹包含 ...

  8. 【原】react中如何使用jquery插件

    react的思想是虚拟dom,提倡最好较少dom的操作,可是我们在写网页的时候,有些复杂的交互还是离不开jquery插件的.而且当你把jquery直接拿来用的时候,你会发觉会报错,要么是找不到那个插件 ...

  9. 将字符串转化为数字(Convert和Parse的用法)

    字符串必须是数字,不要超过转换成目标数字类型的范围.超过的话系统也会报错(溢出). static void Main(string[] args) { string s; int i; Console ...

  10. SVM支持向量机的高维映射与核函数-记录毕业论文2

    上一篇博客将了在数据集线性可分的情况下的支持向量机,这篇主要记录如何通过映射到高维解决线性不可分的数据集和如何通过核函数减少内积计算量的理论思想. [5]径向基函数的核函数:https://www.q ...