Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9265930
  • 博文数量: 299
  • 博客积分: 9955
  • 博客等级: 中将
  • 技术积分: 4177
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-27 20:59
文章分类
文章存档

2015年(1)

2012年(2)

2011年(9)

2010年(47)

2009年(108)

2008年(132)

我的朋友

分类: Mysql/postgreSQL

2009-10-02 11:41:49

第16学时任务调度和报警
你可能要在SQL Server上运行许多数据库任务,但又不想在正常的工作时间里进行。这
可能是因为这些处理需要耗用大量的资源,导致用户们的操作减慢。或者是因为这些处理可
能影响到数据库中大量的数据,比如归档处理。你要处理的其他情况还有每天定时发生的任
务。如果没有办法调度任务以便在指定时间完成,你可能要依赖于人工来运行这些任务了,
这意味着人为的遗忘都可能造成这些任务未执行。SQL Server允许你使用SQL Server Agent调
度和运行作业( j o b ),它是用于控制任务和报警的一个独立服务。作业是指任何运行于S Q L
S e r v e r上的任务;报警是指某个事件发生时(比如数据库已满)SQL Server的反应。
本学时的要点包括:
• SQL Server Agent服务
• 管理作业
• 报警和操作员
• SQL Mail
16.1 SQL Server Agent服务
SQL Server Agent是SQL Server 7.0所带的一个强有力的辅助应用程序。该应用程序使得
系统管理员能够在服务器上调度周期性的活动并且当一个事件(例如错误)发生时通知某个用
户。在作业和警报创建之后,它允许管理员依靠该服务器来确保数据库的维护正确进行,如
果出现问题的话,则通过寻呼或电子邮件告诉管理员。以下是SQL Server Agent所使用的三个
主要组成部分:
• 作业—作业是一系列的工作,至少一个,也可能是许多工作,它为达到一个指定目的
而执行。任务可以调度以便在一天的指定时间里执行,或者按日程表重复执行,比如每
个小时。大多数情况下,创建和调度作业可能是你使用SQL Server Agent的主要目的。
• 报警—报警是当服务器上发生某一事件时产生的一系列反应。例如,一些SQL Server
A g e n t能够响应的事件例子有:特定的错误、特定严重性等级的错误、数据库空余达到
特定数量或者是其他用户自定义的错误。SQL Server能响应报警,给服务器上定义的操
作员发寻呼、发送电子邮件或执行一个任务来纠正错误。
• 操作员—操作员是定义在服务器上的一个人,作为接受报警的对象。当报警发生时,
他就是那个接收电子邮件、寻呼或网络的通知的人。通常操作员是可以处理服务器上所
发生的任何问题的人。
作业、报警和操作员都是使用SQL Server Enterprise Manager在SQL Server上定义的并存
储在SQL Server的m s d b数据库中。当SQL Server Agent首次启动时,它先要查看m s d b数据库
中定义了哪些作业、报警和操作员以及哪些可以执行。当一个任务的指定运行时刻到来时,
SQL Server能够激活该任务。如果SQL Server在任何地方发生一个错误,不论是从调度的任务
还是从SQL Server本身,只要有为该错误定义的报警,这个服务器就能够响应并将此信息传
送给SQL Server Agent服务。
16.2 管理作业
如上所述,作业就是SQL Server为达到某一目的而必须采取的一系列步骤。一个例子便
是备份。在大多数情况下,你可以安排数据库备份工作在一天的特定时间里进行。作为系统
管理员,你不希望每天回去手工运行备份。其他需要创建作业的例子有数据库维护工作、批
处理、归档处理。所有这些作业如果在一天的工作时间里运行会造成资源紧张,从而减慢用
户的运行。
在调度作业时你可以执行的最有用的功能之一是安排它们在多个服务器上运行。这就是多
服务器管理。多服务器管理使你能够通过一个主服务器来管理工作在多个服务器上的作业。主
服务器给目标服务器分配作业,并且从这些服务器上接受事件消息。目标服务器定期连接到主
服务器接受新创建的作业。目标服务器完成作业之后,将连接到主服器上并报告该作业的状态。
这类管理的例子之一是分布于一个宽广地域之内的几个S Q L服务器。你可以用所需的步
骤创建一个备份作业,一个当作业完成后得到报警的操作员,以及一个用于执行的日程表。
当你已经设置好一切并检验过之后,还要做的仅仅是指定所有用作目标服务器的远程服务器。
这样省去了你需要在所有服务器上定义作业的工作量。
16.2.1 调度作业
在SQL Enterprise Manager 中创建作业是最容易的方法。另一个方法是在SQL Query
A n a l y z e r中使用系统存储过程。以下步骤教你使用SQL Enterprise Manager设置一个作业。该
作业将创建一个包含a u t h o r s表中所有人员名字和电话号码的临时表。它还将使用B C P命令把
数据导出到c : \ t e m p目录下的一个平面文件中,然后删除该临时表。
1) 打开SQL Enterprise Manager,并连到你要创建该作业的服务器。
2) 点击“m a n a g e m e n t”文件夹旁的加号( + )。然后,点击“SQL Server Agent”文件夹旁
的加号( + )。最后,点击“J o b s”文件夹。这将显示所有已创建的作业,如图1 6 - 1所示。
1 4 6 SQL Server 7 24学时教程
下载
图16-1 SQL Enterprise
M a n a g e r的“J o b s”
文件夹
3) 在右边的面板中点击鼠标右键,然后点击“ New Job”选项。这就打开了“ New Job
P r o p e r t i e s”对话框, 如图1 6 - 2所示。
4) 第一个分页是“ G e n e r a l”分页,允许你填入有关该作业自身的一般信息。在“ N a m e”
栏填入你和SQL Server用于引用该作业的名称。“C a t e g o r y”下拉列表框是根据作业的用途将
那些较小的作业放到不同的类别中。作业的所有者就是拥有作业并因此有权执行作业的人。
“D e s c r i p t i o n”栏允许你输入简短的描述用于说明该作业的功用。在本例中,我们命名该作业
为“Test Job1”。在“C a t e g o r y”下拉列表框,选择“Database Maintenance”。在“D e s c r i p t i o n”
栏输入“Test Job1 for Hour 16”。
5) 第二个分页,如图1 6 - 3所示,允许你定义该作业的步骤。在本教程中,我们将定义三
个不同的步骤。第一个步骤创建临时表并填充数据;第二个步骤使用B C P命令把数据从该表
中导出;第三个步骤删除该表。
6) 为了定义第一个步骤,点击“ N e w”按钮,打开“New Job Step”的对话框,如图1 6 - 4
所示。在“Step Name”栏中输入该步骤的名称,本例中输入“ Populate Ta b l e”。在“Ty p e”
栏中你可以决定该步骤的类型。本例中,选择“ Transact-SQL Script(TSQL)”。然后选择将要
运行于的数据库。本脚本将运行于p u b s数据库。在命令部分输入以下语句:
SELECT au_lname+','+au_fname AS Author_Names,p h o n e
I N TO phone_book
FROM authors
ORDER BY Author_Names
7) 在“New Job Step”对话框的“ A d v a n c e d”分页,如图1 6 - 5所示。你可以设置S Q L
S e r v e r将如何处理该步任务的运行错误以及S Q L脚本命令选项。
第1 6学时任务调度和报警1 4 7
下载
图16-2 “New Job Propert
i e s”对话框
图16-3 “New Job Propert
i e s”对话框的“S t -
e p s”分页
8) 在你完成了前面的步骤后,点击“ O K”按钮以保存该步骤。因为还将有另外两个步骤,
再次点击“ N e w”按钮。第二个步骤的选项如图1 6 - 6所示。
9) 第三个步骤是另一个将该表从系统中删除的Tr a n s a c t - S Q L脚本( T S Q L ),第三个步骤的
选项如图1 6 - 7所示。因为第三个步骤是最后的一步,改变“ A d v a n c e d”分页中的“On success
a c t i o n”下拉列表框内容为“ Quit job reporting success”。
10) 当你填写完成这些步骤后,“New Job Properties”对话框应该如图1 6 - 8所示的样子。
11) 第三个分页“S c h e d u l e”分页,如图1 6 - 9所示,允许你为运行的作业创建多个日程表。
12) 要创建一个新的日程表,点击“ New Schedule”按钮,打开“New Job Schedule”对
话框,如图1 6 - 1 0所示。在这个对话框里,你能决定SQL Server何时运行作业和怎样运行作业。
1 4 8 SQL Server 7 24学时教程
下载
图16-4 “New Job Step”
对话框的“G e n e r a l”
分页
图16-5 “New Job Step”
对话框的“A d v a n -
c e d”分页
图16-6 用于第二个步骤的
“New Job Step ”
对话框的“G e n e r a l”
分页
在“N a m e”栏,输入该日程表的名称。本例中,键入“ Phone Book Schedule”。通常,日程
表将设定在每个星期天的上午1 2点整,这正是我们想要的。点击“ O K”按钮。
第1 6学时任务调度和报警1 4 9
下载
图16-7 用于第三个步骤的
“New Job Step ”
对话框的“G e n e r a l”
分页
图16-8 所有步骤创建好之后
的“New Job Prop
e r t i e s”对话框的
“S t e p s”分页
图16-9 “New Job Prop
e r t i e s”对话框的
“S c h e d u l e”分页
图16-10 “New Job Sche
d u l e”对话框
13) 最后一个分页“N o t i f i c a t i o n s”分页,如图1 6 - 11所示。它允许你决定当工作完成或失
败时通知谁和怎样通知。在本学时的后面,你将找到关于设置报警方面的更多内容。
14) 当完成了所有这些步骤后,点击“ O K”按钮,作业将被创建。
15) 你可以通过在作业名称上按鼠标右键并选择“ Start Job”来测试该任务是否能够工作。
你能在硬盘驱动器的C: \temp目录中看到该任务运行的结果。
16.2.2 查看作业历史
在你设置了作业并运行后,监视和确保它们正确运行对你说非常重要。这可以通过查看
特定作业的错误日志来实现。它将向你提供有关作业如何运行以及其持续时间的信息。以下
步骤教你查看一个作业的错误日志:
1) 打开SQL Enterprise Manager,并连接到你将要创建作业的服务器上。
2) 点击“m a n a g e m e n t”文件夹旁的加号( + )。然后,点击“SQL Server Agent”文件夹旁
的加号( + )。最后,点击“J o b s”文件夹。这将显示所有已创建的作业。
3) 选择你想得到信息的任务名称并在上面按鼠标右键。在弹出的菜单上选择“ View Job
H i s t o r y”选项,如图1 6 - 1 2所示。
1 5 0 SQL Server 7 24学时教程
下载
图1 6 - 11 “Test Job Prop
e r t i e s”对话框
的“N o t i f i c a t i o n s”
分页
图16-12 选择“View Job
H i s t o r y”选项
4) 在你选择了“ View Job History”选项后, SQL Server将弹出“ Job History”对话框,
如图1 6 - 1 3所示。从这个对话框中,你将能查看到有关该作业如何运行的所有相关信息。
5) 当你完成查看作业信息后,点击“ C l o s e” 按钮退出。
你能用SQL Server作业来做大量的事情。当你开始实际使用SQL Server环境时,将发现服
务器上会有许多事要由作业来完成。
16.3 报警和操作员
当异常发生时, SQL Server能够向一个用户发出信息。这些异常情况可能是产生了一个
特定等级的错误、调度的作业运行失败或发生了其他SQL Server事件。为此,你必须确定两
件事。
第一个是你必须确定将要对什么事件发出报警。除了错误消息,还有其他情况可能需要
你考虑设置报警触发。例如,在一个事务处理进程中,当某个客户放置一个订单或当你要得
到仓库中某个级别的产品时,你可能需要发出一个报警。当然,这两种情况也需要你写一些
额外的SQL Server代码来实现,但这是能做到的。还应该认识到当你使用报警时,能够做的
要比在错误发生时给某人发消息多得多。你还能设置作业为在报警触发时运行。例如,可以
定义一个报警,在一个数据库的事务日志填满时向管理员发送电子邮件,告诉他事务日志已
经满了,同时还可以备份该事务日志。
16.3.1 创建操作员
因为当你创建报警时需要有操作员可通知,所以我先要分步教你如何设置操作员。当你
使用操作员时,有一些事情你需要注意。首先,当发送一个报警时,一个操作员可以有三种
联络方式。第一个是电子邮件,通过设置S Q L邮件实现。S Q L邮件是SQL Server的一个特殊部
分,它可以与Microsoft Exchange Server通信并发送电子邮件。第二个是当错误发生时让S Q L
S e r v e r发传呼给某人。尽管这听起来像一个了不起的功能,但要注意所有的寻呼都是通过寻呼
公司设置的电子邮件网关来实现的。最后一个是让SQL Server通过发送网络消息的方式联络
用户。它向一台个人电脑发送一个信息并显示在用户的屏幕上。然而这有两个问题,首先这
第1 6学时任务调度和报警1 5 1
下载
图16-13 “Job History”对
话框
种方法只可用于正在使用Windows NT的电脑;第二个,如果你的用户运行Windows 95/98作
为桌面操作系统,他将不得不让一个叫Wi n P o p u p的应用程序运行在他的电脑上,以便接受消
息。
以下步骤将教你创建一个可接收报警的操作员:
1) 打开SQL Enterprise Manager,并连接到你要创建该操作员的服务器上。
2) 点击“m a n a g e m e n t”文件夹旁的加号( + )。然后,点击“SQL Server Agent”文件夹旁
的加号( + )。最后,点击“ O p e r a t o r s”文件夹。这将显示所有已创建的操作员,如图1 6 - 1 4所
示。
3) 在右边的面板中点击鼠标右键,然后点击“ New Operator”选项。这就打开了“ N e w
Operator Properties”对话框,如图1 6 - 1 5所示。
4) 在“G e n e r a l”分页上,你将输入有关用户与用户工作时间的信息。在“ N a m e”栏输入
操作员的名字。本例中,可在该栏填写你的名字。如前面提到的,有三种不同的方式向一个
1 5 2 SQL Server 7 24学时教程
下载
图16-14 SQL Enterprise
M a n a g e r的“O p -
e r a t o r s”文件夹
图16-15 “New Operator
P r o p e r t i e s”对话

用户通知所发生的事情。首先,是发电子邮件。为此,请把你的电子邮件地址填写在“ E m a i l
n a m e”栏里。其次,是给用户发寻呼。要采用这种方法,你必须有一个能通过电子邮件网关
给你发寻呼的寻呼公司。为进行该项设置,你需要知道寻呼机的电子邮件地址。最后是向用
户的计算机发网络消息。要采用这种方法,你必须把将要送达消息的计算机的名字填写到
“Net send address”栏里。
5) 在你为该操作员输入完寻呼机的地址后,你可以设置一个工作日程表。它将允许你指
定发寻呼的时间,以便操作员能够接收到寻呼。
6) 在“N o t i f i c a t i o n s”分页上(如图1 6 - 1 6所示),你可以从任何已存在的报警中选择将通知
该用户的报警。
7) 在配置好所有的选项后,就可以点击“ O K”按钮创建该操作员了。
现在已经创建和配置好操作员了,你可以创建可被服务器事件触发的新报警。
16.3.2 创建报警
报警在响应SQL Server 错误时触发,这些错误被写入Windows NT的应用程序日志中。
SQL Server Agent读取该应用程序日志并和它所包含的事件做比较以便按照你定义的方式报
警。一旦SQL Server Agent发现匹配情况,就触发警报。以下事件记录在Windows NT的应用
程序日志里:
• 严重性等级为1 9或更高的错误。
• 使用R A I S E R R O R语句引发并已经用WITH LOG选项调用了的错误。
• 用x p l o g e v e n t扩展存储过程引发的应用程序事件。
其他用于引发报警的选项是使报警基于SQL Server工作性能信息。它允许在达到指定的
性能极限时进行报警。例如:当登录服务器的用户数量超过2 5个或你定义的其他极限时,可
能要创建一个报警去通知操作员。
下面步骤教你创建一个报警。当11 0 5号错误发生在服务器的任何数据库中时,该警报将
通知你前面创建的那个操作员。11 0 5号错误是指用于特定数据库的数据库文件已写满,这将
导致无法再向该数据库添加任何新记录。
第1 6学时任务调度和报警1 5 3
下载
图16-16 “New Operator
P r o p e r t i e s”对话
框的“N o t i f i c a t -
i o n s”分页
1) 打开SQL Enterprise Manager ,并连接到你要创建该报警的服务器上。
2) 点击“m a n a g e m e n t”文件夹旁的加号( + )。然后,点击“SQL Server Agent”文件夹旁
的加号( + )。最后,点击“A l e r t s”文件夹。这将显示所有已创建的报警,如图1 6 - 1 7所示。
3) 在右边的面板中点击鼠标右键,然后点击“ New Alert ”选项。这就打开了“ N e w
Alerts Properties”对话框,如图1 6 - 1 8所示。
4) 在“N a m e”栏输入报警的名字。本例中,报警的名字是“ Full Database”。
5) 为了让SQL Server对于11 0 5号错误报警,在“Error Number”栏输入11 0 5。如果你不知
道错误号但知道错误信息内容,可以点击带省略号( . . . )的按钮。它将打开一个对话框供你搜索
错误信息。
6) 在如图1 6 - 1 9所示的“New Alerts Properties”对话框的“R e s p o n s e”分页中,你可以决
定当报警产生时采取什么行动。它可以是向操作员发电子邮件或寻呼,也可以是运行一个任
务来更正该错误。本例中,最好的选择可能是向操作员发寻呼。在你要发通知的操作员的同
1 5 4 SQL Server 7 24学时教程
下载
图16-17 SQL Enterprise
M a n a g e r的“A l e -
r t s”文件夹
图16-18 “New Alert Prop
e r t i e s”对话框
一行上,点击“P a g e r”列的复选框。
7) 在你完成这些选项的填写之后,点击“ O K”按钮创建这个警报。
16.4 SQL Mail
SQL Server能够通过电子邮件与用户进行交互。然而在这以前,你必须配置SQL Server以
便使用电子邮件。这个过程可能做起来相当复杂。我和那些花好几天时间好不容易才完成这
项工作的用户交谈过。要记住最重要的一点是SQL Mail只能与邮件应用程序接口(即M A P I )一
起工作。大多数情况下, SQL Mail仅与Microsoft Exchange Server一起工作时才运行良好。当
以下条件产生时,SQL Server能够发送信息。
• 当SQL Server报警被触发。
• 当Windows NT性能监视器的限定已达到或超过时。
• 当调度的作业已经完成或失败后。
• 来自定制的存储过程中。
对你来说,设置SQL Mail的过程相当复杂。我们将学习5个基本的安装步骤,更详细的步
骤可以查询SQL Server Books Online。5个基本的安装步骤如下所述:
1) 在用于SQL Server的邮件系统上创建一个帐号。
2) 使用拥有第一步创建的电子邮件帐号的那个帐号去配置SQL Server以便登录到网络。
3) 在运行SQL Server的计算机上安装电子邮件客户程序。
4) 用合适的登录帐号来配置SQL Mail。
5) 启动SQL Mail客户程序。
16.5 课时小结
在这个学时里,我们学习了与SQL Server Agent有关的东西。SQL Server Agent负责运行
调度的作业,触发基于发生在服务器上的事件的报警,以及当事件发生的时候通知操作员。
对于在一天的不同时间里运行作业而言,作业调度是非常重要的,也是非常有用的。然后讲
解了建立报警和操作员。最后,我们讲了SQL Mail和基本的设置步骤。
第1 6学时任务调度和报警1 5 5
下载
图16-19 “New Alerts Prop
e r t i e s”对话框的
“R e s p o n s e”分页
16.6 专家答疑
问题:为什么对我来说在工作时间以外运行诸如批处理和归档等任务很重要?
解答:最简单的答案是让你的用户高兴。当在你的服务器上运行耗费资源的处理时,通
常它可以使服务器运行速度减慢,影响到你的用户。
问题:要监视服务器,能不能不设置报警和操作员?
解答:可以通过人工查看一天的错误日志来监视服务器。如果你做不到,另一个选择是
购买第三方的具有类似功能的应用程序。
16.7 课外作业
这些思考题和练习题是供你加深理解用的。答案可以在附录“答案”中找到。
16.7.1 思考题
1) 什么是SQL Server Agent?
2) 什么是作业?
3) 什么是报警?
4) 可以设置报警由那两件事来触发?
5) 什么是操作员?
6) SQL Server是如何提供寻呼支持的?
7) 为使SQL Mail邮件工作需要哪类邮件系统?
16.7.2 练习题
创建一个报警,当p u b s数据库的事务日志写满时触发。当这个事件发生时,运行一个作
业用于备份并截短该数据库的事务日志。
阅读(698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~