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实例来发送和接收邮件。在这个邮件系统里有很多问题和限制,包括:
由于这些限制,新的邮件系统为SQL Server 2005设计了。那个新的邮件系统,数据库邮件,去掉了这些限制,大大提高了SQL Server邮件的可靠性。在故障群集配置了,数据库邮件完全支持。数据库邮件使用SMTP与邮件服务器交互,取消了额外邮件API的支持。数据库邮件内部使用服务代理(service broker)对所有邮件进行队列管理,使邮件系统更加健壮。
数据库邮件可独立运行,让T-SQL的调用到msdb数据库,然后直接与SMTP邮件服务器交互,使用在msdb数据库存储的安全信息。
数据库邮件默认是没有配置的(和SQL Server代理类似)。在可以配置和使用它的功能之前,首先你必须启用数据库邮件。你有3个不同的方式启用数据库邮件:
数据库邮件配置向导
在开始数据库邮件前,使用SSMS连接到你的SQL Server本地实例,然后展开管理文件夹,右击【数据库邮件】。选择【配置数据库邮件】,数据库邮件配置向导会启动,显示向导的介绍,点击【下一步】,你会看到向导里的可用选项,如插图1所示。
插图1——数据库邮件配置向导——选择配置任务
因为这是你第一次运行数据库邮件配置向导,你会需要保持这个选择来配置数据库邮件。点击【下一步】,你会看到启用数据库邮件的对话框,如插图2所示。
插图2——是否启用数据库邮件?
还没提到安全,你会需要是sysadmin服务器组成员才可以完成这个任务。选择【是】,合适的sp_configure命令会代你运行。你会看到【新建配置文件】对话框。输入配置文件名和描述,然后点击【增加】按钮进入SMTP账号列表,如插图3所示。
插图3——新建数据库邮件账号
账号名称是写给你看的,因此要使用一些有意义的名称。邮件地址会显示来自SQL Server的名称。取个允许你专门发送SQL Server邮箱的名字更好。当然,你也可以使用日常的邮箱。
服务器名称是SMTP邮件服务地址(博主注:首先要保证你的邮件已经启用SMTP功能)。使用【基本身份认证】(用户名要参考具体邮件服务器的要求)。
完成这些配置后,点击【确定】来结束邮件账号配置。你可以按照这个方法创建多个邮件账号,如果第一个账号发送失败,第二个账号会自动启用。对于一个邮件配置可以拥有多个邮件账号。现在,我们切换回单个邮件账号界面,点击【确定】。你要设置你创建的账号为【公共配置文件】(例如让所有认证的数据库邮件用户使用这个邮件配置来发送邮件),你可以保持它为私有(你会关联一个数据库用户来使用这个配置文件)。因为这是第一个配置文件,我们设置为公共配置(如插图4所示)。
插图4——设置数据库配置为公共。
点击【下一步】,你完成了初始数据库配置的配置。可是,现在出现在你面前的是【配置系统参数】对话框,允许你修改数据库邮件系统级的设置(如插图5所示)。
插图5:数据库邮件系统参数
在这里你可以指定下列选项:
现在的话,接受默认,点击【下一步】完成【数据库邮件配置向导】(如插图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.cnblogs.com/woodytu/p/5154526.html