SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。


在以前的文章里我们看到,SQL Server代理由一系列的作业步骤组成,每个作业步骤是要进行的不同工作类型。SQL Server代理也提供创建警报的功能,它可以发消息给指定的操作员作为提醒。这些提醒很可能通过数据库邮件发送,SQL Server和SQL Server代理内建的功能来发送和接收邮件。在这篇文章里,你会学到如何配置数据库邮件来进行发送和接收操作,还有数据库邮件的基本故障排除步骤。

数据库邮件的简单介绍

在SQL Server 2000或以前的版本里,邮件系统就可用,被称为SQLMail。SQLMail(最终会被移除掉,但在SQL Server 2008 R2里还是存在的)使用MAPI(邮件应用程式接口(Messaging Application Programming Interface))的API来代表SQL Server实例来发送和接收邮件。在这个邮件系统里有很多问题和限制,包括:

  • 不支持故障群集
  • 依赖别的程序(例如微软的Outlook)提供的MAPI
  • 依赖SQL Server服务有MAPI配置
  • 邮件发送后,如果发送失败不能重发
  • 没有支持SQL Server可用MAPI版本

由于这些限制,新的邮件系统为SQL Server 2005设计了。那个新的邮件系统,数据库邮件,去掉了这些限制,大大提高了SQL Server邮件的可靠性。在故障群集配置了,数据库邮件完全支持。数据库邮件使用SMTP与邮件服务器交互,取消了额外邮件API的支持。数据库邮件内部使用服务代理(service broker)对所有邮件进行队列管理,使邮件系统更加健壮。

数据库邮件可独立运行,让T-SQL的调用到msdb数据库,然后直接与SMTP邮件服务器交互,使用在msdb数据库存储的安全信息。

数据库邮件配置

数据库邮件默认是没有配置的(和SQL Server代理类似)。在可以配置和使用它的功能之前,首先你必须启用数据库邮件。你有3个不同的方式启用数据库邮件:

数据库邮件配置向导

  • 图形化向导,从SSMS启动,会启用数据库邮件并配置服务的基本能力。这是我们这篇文章里要介绍的。
  • sp_configure
  • 和大多数服务器配置选项一样,你可以使用sp_configure系统存储过程来启用或停用数据库邮件。你指定“Database Mail XPs”选项(在sp_configure里的高级选项)为1来启用数据库邮件,0来停止数据库邮件。
  • 基于策略管理
  • 你可以指定”@DatabaseMailEnabled“并设置值为True,然后添加这方面的配置到策略,并应用策略到特定的SQL Server。如果你想管理多个服务器的话,这是从扩展性来说最好的选项(基于策略的管理自SQL Server 2008和以后版本都可用)。

使用数据库邮件配置向导来启用数据库邮件

在开始数据库邮件前,使用SSMS连接到你的SQL Server本地实例,然后展开管理文件夹,右击【数据库邮件】。选择【配置数据库邮件】,数据库邮件配置向导会启动,显示向导的介绍,点击【下一步】,你会看到向导里的可用选项,如插图1所示。

插图1——数据库邮件配置向导——选择配置任务

因为这是你第一次运行数据库邮件配置向导,你会需要保持这个选择来配置数据库邮件。点击【下一步】,你会看到启用数据库邮件的对话框,如插图2所示。

插图2——是否启用数据库邮件?

还没提到安全,你会需要是sysadmin服务器组成员才可以完成这个任务。选择【是】,合适的sp_configure命令会代你运行。你会看到【新建配置文件】对话框。输入配置文件名和描述,然后点击【增加】按钮进入SMTP账号列表,如插图3所示。

插图3——新建数据库邮件账号

账号名称是写给你看的,因此要使用一些有意义的名称。邮件地址会显示来自SQL Server的名称。取个允许你专门发送SQL Server邮箱的名字更好。当然,你也可以使用日常的邮箱。

服务器名称是SMTP邮件服务地址(博主注:首先要保证你的邮件已经启用SMTP功能)。使用【基本身份认证】(用户名要参考具体邮件服务器的要求)。

完成这些配置后,点击【确定】来结束邮件账号配置。你可以按照这个方法创建多个邮件账号,如果第一个账号发送失败,第二个账号会自动启用。对于一个邮件配置可以拥有多个邮件账号。现在,我们切换回单个邮件账号界面,点击【确定】。你要设置你创建的账号为【公共配置文件】(例如让所有认证的数据库邮件用户使用这个邮件配置来发送邮件),你可以保持它为私有(你会关联一个数据库用户来使用这个配置文件)。因为这是第一个配置文件,我们设置为公共配置(如插图4所示)。

插图4——设置数据库配置为公共。

点击【下一步】,你完成了初始数据库配置的配置。可是,现在出现在你面前的是【配置系统参数】对话框,允许你修改数据库邮件系统级的设置(如插图5所示)。

插图5:数据库邮件系统参数

在这里你可以指定下列选项:

  • 账户重试次数:在给出的邮件配置里的账号列表,切换到第二个账号前,使用第一个邮件账号尝试失败次数。
  • 账户重试延迟时间:在每次尝试连接并使用SMTP邮件账号之间的等待时间(秒为单位)
  • 最大文件大小(字节):使用数据库邮件允许的最大附件大小。你可以把来自SQL Server的查询结果通过邮件附件进行发送,因此你可能会希望它尽可能大。但邮件服务器上的附件大小设置会覆盖这里的配置。
  • 禁止的附件文件扩展名:数据库邮件不能发送的扩展名列表。这主要用来保证你的邮件系统不会通过可执行的或脚本来传播病毒。当然,你可以按需要添加自己或删除自己SQL Server需要的文件扩展名。
  • 数据库邮件可执行文件的最短生存期(秒):数据库邮件进程启动时有个额外开销(因为它在外部运行,并不是数据库引擎或SQL Server代理的一部分)。这个设置决定SQL Server代理使用数据库邮件发送邮件后的持续运行时间。如果你经常使用数据库邮件,可以保持这个进程运行更长,可以让数据库邮件的启动更短,因为SQL Server邮件需要重新查询SQL Server并缓存内部信息(例如账号配置),发送邮件时,它们是必须的。
  • 日志记录级别:有三个记录级别:普通、扩展、详细。如果你在故障排除或想查看更多的数据库邮件信息,可以设置记录级别为详细。你可以在SSMS里检查数据库邮件记录级别(或者在msdb数据库里的sysmail_event_log视图里)。

现在的话,接受默认,点击【下一步】完成【数据库邮件配置向导】(如插图6所示)

插图6——完成数据库邮件向导

如果一切顺利的话,你会看到如插图7的结果,显示已经创建的配置和账号,账号与配置文件关联,配置文件是公共的。如果这里发生了错误,或者你需要修改邮件设置的配置,重新运行数据库邮件配置向导,在第一个对话框上(如插图1所示),选择第二个选项【管理数据库邮件账号和配置文件】,你可以修改所有输入的信息,创建新的邮件配置或邮件账号。

插图7——向导成功执行所有的命令

下一步

一旦向导完成,有2个步骤可以确认你的数据库邮件已经成功配置,首先,你会想发送一个测试邮件。然后,你应该检查下日志来看看数据库邮件记录测试邮件发送的基本信息。

发送测试邮件

发送测试邮件,在SSMS里右击【数据库邮件】节点,在菜单选项里选择【发送测试邮件】,你会看到如插图8的对话框。

插图8:发送测试邮件

如果邮件发送成功,点击【发送测试电子邮件】按钮后,出现的【数据库邮件测试电子邮件】对话框上的【确定】按钮。如果你不能收到邮件,点击【疑难解答】按钮,会出现数据库邮件故障排除的帮助链接。对于SQL Sever 2008 R2有很多可用选项,如插图9所示。选择合适的症状,你可用按照向导提示来进行故障排除。

插图9——数据库邮件故障排除

如果一切顺利,你会看到如插图11所示的邮件信息。一旦配置成功,你可用使用邮件操作员,如第3篇文章所介绍的在SQL Server里发送邮件警报。

插图10——来自SQL Server数据库邮件的测试邮件

检查数据库邮件日志

检查数据库邮件日志,你要么直接查看msdb..sysmail_event_log视图,或者在SSMS里右击数据库邮件,选择【查看数据库邮件日志】。你会看到标准日志文件查看器,只过滤显示了数据库邮件日志。如果你成功发送了邮件,你会看到数据库邮件进程启动。如果你有错误,你会看到对应的错误信息,点击信息会日志界面底部显示关于错误的具体信息。

插图11——日志文件查看器查看数据库邮件日志

如果你还有困难,你可以在数据库邮件里调整日志级别为详细。有2个操作方法,一个是SSMS,右击数据库邮件,再次启动配置向导,选择【查看或修改系统参数】,你会看到会插图5一样的界面,选择【日志记录级别】为【详细】,点击【下一步】来完成向导,再次尝试发送邮件。你会在数据库邮件日志视图里看到详细日志信息。另一个就是通过msdb数据库里系统存储过程sysmail_configure_sp。

1 Select name from sys.all_objects 

下篇预告

如你所见,数据库邮件非常简单,一旦你有一个兼容SMTP的邮件服务器,你就可以和你的SQL Server进行交互,非常灵活。数据库邮件有安全限制,允许你配置谁可以发送邮件(通过msdb里的DatabaseMailUserRole),也可以使用邮件配置来限制特定用户。你可以使用SQL Server代理的数据库邮件来发送警报来自动话SQL Server的管理。

现在你有作业、警报、操作员的基础,邮件也可以发送了,下篇我们来看看下SQL Server代理的错误日志,还有它如何帮助我们进行SQL Server代理的故障排除。

原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/72455/

SQL Server代理(4/12):配置数据库邮件相关推荐

  1. SQL Server代理(11/12):维护计划作业

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,我们看了使用代理帐户模 ...

  2. SQL Server代理(3/12):代理警报和操作员

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的文章里所见,SQL Se ...

  3. SQL Server代理(8/12):使用SQL Server代理外部程序

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的上篇文章里,你学习如何使用SQ ...

  4. 如何创建和配置SQL Server代理警报

    介绍 (Introduction) If you have ever wanted to run a job dependent on a certain performance condition, ...

  5. 对警报线程池的警报线程_检测和警报SQL Server代理丢失的作业

    对警报线程池的警报线程 摘要 (Summary) While alerting on failed SQL Server Agent jobs is straightforward, being no ...

  6. (转)SQL Server:在 SQL Server 2005 中配置数据库邮件,发送邮件

    SQL Server:在 SQL Server 2005 中配置数据库邮件,发送邮件 [作/译者]:鹏城万里    [日期]:2008-07-24    [来源]:本站原创    [查看]: 2031 ...

  7. mysql配置数据库邮件_SQL Server配置数据库邮件

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

  8. SQL SERVER 使用订阅发布同步数据库(转)

    一.数据库复制涉及  1.发布服务器:  数据的来源服务器,维护源数据,决定哪些数据将被分发,检测哪些数据发生了修改,并将这些信息提交给分发服务器.  2.分发服务器: 分发服务器负责把从发布服务器拿 ...

  9. 有关SQL Server代理的常见问题和示例

    介绍 (Introduction) In this article, we will answer FAQs about the SQL Server Agent. We will learn how ...

最新文章

  1. lua搭建ui_构建类魔兽UI插件的lua安全沙箱
  2. Java基础教程,第三讲,运算符 变量定义 数据类型转换
  3. 120000字,你们要的Java 并发编程图文小册整理出来了,免费送给大家!
  4. js数组的sort排序详解
  5. jsp mysql代码提示错误,Web工程出现错误mysql错误
  6. 在Linux下写一个自己的命令
  7. Sqoop import导入表时报错java.lang.ClassNotFoundException: org.json.JSONObject
  8. SPOJ - LCS2 Longest Common Substring II(后缀自动机)
  9. Python案例:输出指定范围的闰年
  10. [ISSUE]invalid 'cobj' in function 'lua_cocos2dx_EventDispatcher_dispatchCustomEvent'
  11. 需求分析报告模板(免费)
  12. java文件保险柜,java
  13. 记一次解决eclipse复制粘贴不能用问题
  14. 【-O1-O2-O3-Ofast...】C/C++编译器代码优化原理方案
  15. 怎样写作数学建模竞赛论文
  16. win10如何修改远程桌面的默认端口_win10远程桌面端口的更改办法
  17. html+圆角六边形,ppt怎么设计圆角正六边形
  18. 关于http的Authorization
  19. 工作八年的程序员,却拿着毕业三年的工资,再不开窍就真晚了...
  20. 使用ffmpeg分割视频

热门文章

  1. Win7下Solr4.10.1和TomCat8的安装
  2. Xah Lee Web 李杀网
  3. 解决SWFUpload在Chrome、Firefox浏览器下session找不到的问题
  4. ⼤海捞针 —— Scan
  5. Activity 在横竖屏切换情况下的生命周期变化
  6. IO编程__字节流__输入、输出__图片移动
  7. Java经典实例:比较浮点数
  8. 【转】Lucene 工作原理
  9. 使用VirtualBox SDK之初步编译
  10. [Oracle] Enable Row Movement