第四篇 SQL Server代理配置数据库邮件

本篇文章是SQL Server代理系列的第四篇,详细内容请参考原文



正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行。SQL Server代理同样提供创建警报,能够以通知的形式将消息发送给设定的操作员。这些通知可以通过数据库邮件发送,数据库邮件是内置在SQL Server和SQL Server代理能够发送和接收电子邮件。在这一篇,你将学习如何配置数据库邮件发送和接收操作,以及一些基本的数据库邮件故障排除步骤。
数据库邮件的简要概述
在SQL Server 2000及更早的版本,提供的是称为SQLMail的邮件系统。SQLMail(最终将被删除,但仍然在SQL Server 2008 R2)使用MAPI(消息应用程序编程接口)API集发送和接收电子邮件。这种邮件系统有几个问题和局限性,包括:
->缺乏故障转移群集支持
->依赖的MAPI接口由另一应用程序提供(如微软Outlook)
->依赖SQL Server服务有一个MAPI配置文件
->无法重新发送邮件如果在邮件发送之前发生故障
->没有支持SQL Server的MAPI版本
由于这些限制,SQL Server 2005设计了一个新的邮件系统。新的邮件系统——数据库邮件,删除了这些局限性,大大提高SQL Server的邮件的可靠性。数据库邮件完全支持于故障转移群集配置。数据库邮件使用SMTP和邮件服务器通信,消除邮件API支持的任何外部依赖。数据库邮件在内部使用Service Broker队列处理所有邮件的请求,使邮件系统更强大。
数据库邮件作为一个独立的可执行,可以用Transact-SQL从msdb数据库中调用,使用存储在msdb中的安全信息直接与SMTP邮件服务器交互。
数据库邮件配置
数据库邮件默认不是开启的(很像SQL Server代理)。在你可以配置和使用它提供的功能之前,你必须启用数据库邮件。有三种方法可以启用数据库邮件:
->数据库邮件配置向导:这是一个图形化的向导,这将启用数据库邮件以及配置基本服务项目。这是我们将在本文中使用的。
->sp_configure:与大多数服务器配置选项,你可以使用sp_configure系统存储过程来启用或禁用数据库邮件。你指定"Database Mail XPs"(sp_configure高级选项)为1启用数据库邮件,或为0禁用数据库邮件。
->基于策略的管理
你可以将Facet"@DatabaseMailEnabled"的值设置为true,然后添加Facet配置的策略,并将策略应用到具体SQL Server。如果你想管理多台服务器,从扩展性来说这是最好的选择(基于策略的管理是在SQL Server 2008及更高版本才提供)
使用数据库邮件配置向导启用数据库邮件
要开始启用数据库邮件,用SSMS连接本地的SQL Server实例->管理->数据库邮件->配置数据库邮件,然后数据库邮件配置向导将启动,显示向导介绍。单击"下一步",你会看到在向导中可用的选项,如图4.1所示
图4.1 数据库邮件配置向导--选择配置任务
因为这是第一次运行数据库邮件配置向导,你需要保持数据库邮件选项设置。单击"下一步",提示你启用数据库邮件,如图4.2所示
图4.2 启用数据库邮件
虽然没涉及到安全,但你需要sysadmin服务器角色的成员来完成这项任务。选择"是",操作对应的的sp_configure命令会运行。你会看到新建配置文件对话框。输入配置文件的名称和描述,然后点击SMTP帐户列表旁边的添加…按钮,如图4.3所示
图4.3 创建数据库邮件帐户
账户名是为了方便,所以用一些让你容易记忆的。电子邮件地址将显示在SQL Server所发出邮件的"发件人"对应的真实email地址。显示名称对应"发件人"的别名/显示名。你可以设定答复电子邮件用于接收所有回复给SQL Server的邮件。
Exp:电子邮件地址为A,答复电子邮件为B,发送测试邮件给C。C将收到A的电子邮件,发件人显示为"显示名称",如果C回复测试邮件,B将收到C的电子邮件。如下图所示
服务器名称可能是DNS名称或特定邮件帐户所使用的SMTP邮件服务器的IP地址。端口号默认为25,但是你的邮件服务器可能需要使用一个自定义的端口号。最后,你有三个SMTP身份认证选项。你可以使用数据库引擎服务凭据的Windows身份验证(这将SMTP服务作为的数据库引擎服务使用的服务帐户(mssqlservr.exe),使用基本身份验证(用户名和密码),或者匿名认证(这真的意味着没有认证)。如果你不知道这些设置,你可以从你的公司的电子邮件管理员或Internet服务提供商(ISP)知道。多数ISP提供与你的Internet连接的电子邮件服务。
一旦你选择了合适的身份验证选项,单击OK完成邮件帐户配置。你可以在向导里创建其他帐户关联邮件配置文件。如果第一个账户因为某些原因无法连接到邮件服务器发送邮件,列表中的第二个帐户将会使用。你可以有多个帐户与一个邮件配置文件关联。现在,保持一个单一的SMTP帐户,然后单击"下一步"。你将选择使邮件配置文件,你已经创建了一个公共配置文件(允许所有授权数据库邮件用户使用此邮件配置发送邮件),或者你可以把它私有化(在这种情况下,你只能从msdb数据库使用用户ID联系配置文件)。因为这是第一个文件,把它设置为默认的公共配置文件(如图4.4)。
图4.4 设置数据库配置文件为公共
单击"下一步",你完成配置第一个数据库配置文件。但是,你现在面对"配置系统参数"对话框,它允许你查看或更改数据库邮件系统参数(见图4.5)。
图4.5 数据库邮件系统参数
你可以指定以下选项:
->帐户重试次数
邮件服务器尝试发送电子邮件的重试次数
在它放弃并切换到给定邮件配置文件的帐户列表中下一个电子邮件帐户之前,数据库邮件尝试发送电子邮件的次数
->帐户重试延迟时间(秒)
邮件服务器尝试发送电子邮件的时间间隔(秒)
->最大文件大小(字节)
邮件服务器发送电子邮件附件的最大文件大小(字节)
你可以把SQL Serverr的查询结果(包括其他)作为邮件附件发送,所以你可能会想这是比你想象的。你可以,但是,有限制的附件大小由你的邮件服务器也将重写此设置。
->禁止的附件文件扩展名
邮件服务器发送电子邮件附件时禁止使用的文件扩展名
这主要是作为一种方法来确保你的邮件系统不会通过程序或脚本传播病毒。当然你可以添加或删除扩展名。
数据库邮件可执行文件的最短生存期(秒)
There is overhead associated with starting up the database mail process(因为它运行的外部而不是数据库引擎或SQL服务器代理部分)。这个设置确定了在SQL Server代理最后一次发送电子邮件后数据库邮件会保持运行多长时间。如果你频繁使用数据库邮件,保持运行时间长点可以节省重新查询SQL Server和缓存内的信息(如帐户配置文件)。
->日志记录级别
确定写入数据库邮件事件日志的事件
有三种可能的日志记录级别--普通、已扩展、详细。如果你正在解决问题或希望看到尽可能多的数据库邮件信息,建议将日志记录级别设置为详细。然后你可以在SSMS中回顾数据库邮件日志(或msdb数据库中的sysmail_event_log视图)
当前保持默认设置,单击"下一步",然后完成创建邮件配置文件和帐户(图4.6)。
图4.6 完成数据库邮件配置向导
因为如果一切正常,你会看到类似图4.7,显示配置文件和帐户已经成功创建。如果因为某些原因这里出错,或者以后需要改变你对邮件创建的设置,重新启动数据库邮件配置向导,在第一个对话框(如图4.1),选择第二个单选按钮标记为"管理数据库邮件帐户和配置文件。"你将可以修改你刚才输入的一切,或创建新的邮件配置文件或邮件帐户。
图4.7 数据库邮件配置向导
下一步
当向导完成时,有几个步骤来确认你已正确配置数据库邮件。首先,你要发送测试邮件;然后,你应该查看数据库邮件日志。
发送测试邮件
在SSMS下右击数据库邮件节点,选择"发送测试电子邮件…",你会看到图4.8那样的对话框。给自己发送邮件来测试邮件系统是否正常运行。
图4.8 发送测试邮件
如果邮件发送成功,在弹出的数据库邮件测试电子邮件对话框单击"确定"。如果你不能够收到邮件,点击"疑难解答",可以通过在线丛书,查找合适的故障排除指南。
如果你能正常收到测试邮件,你就可以用这一系列的第三篇中提到的操作员来发送警报邮件。
查看数据库邮件日志
查看数据库邮件日志,你可以直接从msdb .. sysmail_event_log视图中查询,或在SSMS右键单击数据库邮件并选择"查看数据库邮件日志"菜单选项。你将看到日志文件查看器,这里我们只查看数据库邮件日志。如果你只有成功发送的邮件,你应该看到一条消息,数据库邮件进程已启动。如果有错误,如图4.9所示,一旦你选择一个错误的信息,在日志屏幕底部将显示有关错误的详细信息。
图4.9 日志文件查看器
如果你仍然有困难,你可以将数据库邮件中的日志记录级别调整为"详细"。你可以通过SSMS或通过msdb数据库中的sysmail_configure_sp存储过程。在SSMS中,右击数据库邮件,重新启动配置向导,并选择配置任务"查看或更改系统参数。"你会再次看到图4.5,然后修改日志记录级别为详细。单击"下一步"完成向导,然后再次尝试发送电子邮件。你将在数据库邮件日志查看器中看到所有可用的日志信息。
Exp:电子邮件地址为A,答复电子邮件为B,发送测试邮件给C。C将收到A的电子邮件,发件人显示为"显示名称",如果C回复测试邮件,B将收到C的电子邮件。如图4.10所示


4.10 发送并回复测试邮件
下一篇
正如你所看到的,数据库邮件相当直截了当和灵活,只要你有一个可以和SQL服务器通信的SMTP邮件服务器。数据库邮件的安全限制,允许你配置谁可以发送电子邮件(通过在msdb的DatabaseMailUserRole),以及限制特定用户的邮件配置文件。你可以结合数据库邮件和SQL Server代理来发送警报和其他帮助自动化管理SQL服务器。
现在,你了解了作业、警报、操作员、数据库邮件的基础知识,下一步我们将开始了解SQL Server代理错误日志中不同类型的条目,了解他们如何可以帮助你解决SQL Server代理问题。

时间: 2024-12-28 21:02:40

第四篇 SQL Server代理配置数据库邮件的相关文章

第五篇 SQL Server代理理解代理错误日志

本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到,SQL Server代理可以通过数据库邮件发送通知.如果有什么不正确的,你必须查看数据库邮件日志.在这一篇,你将学习如何理解和查看所有相关的SQL Server代理错误日志.你将回顾最常见的错误信息,掌握哪些信息需要你采取行动,哪些信息只是单纯的信息而已.一旦你理解错误日志,在处理SQL Serv

第十篇 SQL Server代理使用代理帐户

本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这系列的前几篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole.SQLAgentReaderRole和SQLAgentOperatorRole.每个角色授予用户一定的权限来使用SQL Server代理,而不必是sysadmin服务器角色的成员.为完全管理控制SQL Server代理,你仍然需要sysadmin角色的成员.此外,你回顾了SQL Server代理服务

第九篇 SQL Server代理了解作业和安全

本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这系列的前几篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本,甚至自己的程序.你最好的选择是使用PowerShell的子系统运行PowerShell脚本.PowerShell脚本将允许你处理几乎所有方面的Windows和SQL Server问题.在这一篇,你会深入到SQL Server代理安全.安全是个令人困惑的话题,它值得一些明确的考虑.这系列有两个不同方面

第六篇 SQL Server代理深入作业步骤工作流

本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术上是独立的,但是你可以创建工作流贯穿作业中的各个步骤.在这篇文章中,你将学习如何在作业步骤中使用工作流来改变要执行的操作,单一作业有多个条件可以处理.你也会接触作业步骤安全和作业子系统的更多细节.SQL Server代理步骤如第二篇所述,SQL Server代理作业包含一个或多个作业步骤.每一个作业

SQL Server之 (一) 数据库简介 SQL Server环境配置 数据库基础知识

   前言 这个是我工作两年多后,再次从最基础的SQL入门开始,认真的学一遍SQL Server,捡漏和巩固都有;因为自己刚开始学的时候,总是心烦气躁,最近换工作,发现1到2年经验,问到基础性的东西还是很多,这个时候需要的是扎实的基础功夫,所以一系列打击+反省后,自己节假日在家从最基础重新认识一下SQL Server,继续沉淀一下.哪里有不对或需深入探讨,请直接留言或者小窗我;欢迎~ (一) 数据库简介   SQL Server环境配置   数据库基础知识 1.什么是数据库,数据库有哪些特点,为

第八篇 SQL Server代理使用外部程序

本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这系列的前几篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Server代理作业上,作业活动监视器是一个很好的工具.第八篇,你会看到SQL Server代理的另一个功能——the ability to shell out to the operating system and run programs outside of the SQL Server enviro

第一篇 SQL Server代理概述

本系列文章来源于sqlservercentral,详细内容请参考原文. SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量.SQL Server代理的核心是运行批量作业的能力.“批量”可以简单的理解成“一系列的动作”,经常是TSQL脚本.它们可以以作业的形式在特定的调度运行,这个调度你可以选择在只有少量用户访问系统的时间点/段.换而言之,可以使用SQL Server代理排定批量作业.批量作业可以是平常的T-SQL任务,也可以是运行于多个

第二篇 SQL Server代理作业步骤和子系统

本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作).每个作业步骤运行于一个单独的安全上下文,尽管每个作业有一个所有者来决定谁可以修改作业.本篇主要关注组成SQL Server代理的作业步骤和子系统.快速回顾作业理解SQL Server代理作业的最佳方式是把相关联的 需要完成给定任务 的组件放在一个容器中.作业最主要的组件有作业步骤.计划.警告和通知.

第七篇 SQL Server代理作业活动监视器

本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这系列的前几篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作业活动监视器.作业活动监视器是系统管理工具来运行工作,查看作业历史记录,并启用/禁用作业.本文同样会回顾一些作业活动监视器调用的存储过程,你可以直接调用过程做你自己的自定义任务监控.SQL Server代理作业活动监视器SQL Server代理作业活动监视器的主要机制是监视作业运行,以及查看代理已运行