1、1,警报管理,第11章 SQL Server代理服务,配置SQL Server代理服务,11.1,操作员管理,11.2,作业管理,11.3,11.4,2,SQL Server代理(SQL Server Agent)服务是一种自动执行某种管理任务的Windows服务,它可以执行作业、监视SQL Server及触发警报。在实际应用时,可以将那些周期性的工作定义成一个作业,在SQL Server代理的帮助下自动执行。在自动执行作业时,若出现某种事件(如故障),则SQL Server代理自动通知操作员,操作员获得通知后及时解决问题(如排除故障)。这样,在作业、操作员、警报三者之间既相互独立,又相互联系
2、、相互补充,构成了自动完成某些任务的有机整体。 本章将介绍如何配置和管理SQL Server代理服务。,3,本章要点,配置SQL Server代理服务 操作员管理作业管理 警报管理,4,11.1 配置SQL Server代理服务,启动和中止SQL Server代理服务配置SQL Server代理服务属性,5,11.1.1 启动和中止SQL Server代理服务,使用SQL Server服务管理器 使用SQL Server企业管理器 使用命令行 使用Windows服务窗口,6,1. 使用SQL Server服务管理器,打开SQL Server服务管理器,在“服务”组合框中选择“SQL Serve
3、r Agent”,可以启动、暂停和中止SQL Server代理服务,如下图所示:,7,2使用SQL Server企业管理器,在企业管理器中展开服务器实例,选择“管理”目录下的“SQL Server代理”,可以查看到SQL Server代理服务的3个项目,即警报、操作员和作业。右击“SQL Server代理”,在快捷菜单中选择“启动”或“停止”,可以启动或停止SQL Server代理服务。,8,3. 使用命令行,(1)net start命令 net start SQLServerAgent 运行结果如下: SQLSERVERAGENT 服务正在启动. SQLSERVERAGENT 服务已经启动成
4、功。(2)net stop命令 net stop SQLServerAgent 运行结果如下: SQLSERVERAGENT服务正在停止. SQLSERVERAGENT服务已成功停止。,9,4使用Windows服务窗口,打开Windows服务窗口,找到SQLSERVERAGENT项, 在其快捷菜单中选择“启动”或“停止”,可以启动或停止SQL Server代理服务。,10,11.1.2 配置SQL Server代理服务属性,在企业管理器中,右击“SQL Server代理”项,在快捷菜单中选择“属性”,打开“SQL Server代理属性”对话框。在该对话框中,可以设置服务启动账户、重新启动服务和
5、SQL Server连接方式等。,11,1. 设置服务启动账户,服务启动账户定义SQL Server代理服务在哪个Windows账户下运行,它决定了 SQL Server代理服务的网络权限。SQL Server提供两种服务启动账户,即系统账户和本账户。系统账户是内置的本地系统管理员账户。该账户是本地计算机上的“管理员”组成员,因此也是SQL Server中的sysadmin角色成员。如果作业仅需要使用本地系统上的资源,可以设置为系统账户。 本帐户可以指定SQL Server代理服务在哪个Windows域账户下运行。指定的域账户必须是在运行SQL Server实例的本地服务器上的sysadmin
6、角色成员。,12,2. 设置重新启动服务,在“SQL Server代理属性”对话框中,单击“高级”选项卡,可以设置重新启动服务选项。可以选择在SQL Server意外停止时自动重新启动或者在SQL Server代理意外停止时自动重新启动。,13,3. 设置SQL Server连接方式,在“SQL Server代理属性”对话框中,单击“连接”选项卡,可以设置SQL Server代理服务连接到SQL Server的方式 。,14,11.2 操作员管理,操作员是接收SQL Server代理服务发送消息的用户,它的基本属性包括姓名和联系信息。可以通过以下方式发送消息给操作员:电子邮件:发送电子邮件需要
7、遵从MAPI-1的电子邮件客户程序。SQL Server代理程序需要一个有效的邮件配置文件才能发送电子邮件。MAPI-1客户程序的例子包括 Outlook和Exchange客户程序。寻呼机:第三方发送消息的软件或硬件。net send:通过网络发送系统消息。,15,11.2.1 创建操作员,使用企业管理器使用存储过程,16,1.使用企业管理器,在企业管理器中展开SQL Server实例,选择“管理”/“SQL Server代理”/“操作员”,可以查看当前数据库中的操作员列表。,17,1.使用企业管理器,右击“操作员”名称,在快捷菜单中选择“新建操作员”,打开并设置“新建操作员属性”对话框,18
8、,2. 使用sp_add_operator存储过程创建操作员,sp_add_operator name=操作员名称, email_address = 电子邮件地址, pager_address = 寻呼地址, weekday_pager_start_time = 开始时间, weekday_pager_end_time = 结束时间, saturday_pager_start_time = 开始时间, saturday_pager_end_time = 结束时间, sunday_pager_start_time = 开始时间, sunday_pager_end_time = 结束时间, pag
9、er_days = 接受消息的日期数字,19,参数说明,email_address = 电子邮件地址:操作员用于接收消息的电子邮件地址。 pager_address = 寻呼地址:操作员用于接收消息的寻呼程序地址。 weekday_pager_start_time = 开始时间:代理程序在工作日(周1周5)将呼叫提示发送给操作员的时间。它的数据类型为int,默认设置为090000,表示24小时制的上午9:00,且必须使用HHMMSS的形式输入。,20,参数说明,weekday_pager_end_time = 结束时间:代理程序在工作日(周1周5)不再将呼叫提示发送给操作员的时间。它的数据类型
10、为int,默认设置为180000,表示24小时制的下午6:00,且必须使用HHMMSS的形式输入。saturday_pager_start_time = 开始时间:代理程序在周6将呼叫提示发送给操作员的时间。其他情况与weekday_pager_start_time相似。saturday_pager_end_time = 结束时间:代理程序在周6不再将呼叫提示发送给操作员的时间。其他情况与weekday_pager_end_time相似。,21,参数说明,sunday_pager_start_time = 开始时间:代理程序在周日将呼叫提示发送给操作员的时间。其他情况与weekday_page
11、r_start_time相似。sunday_pager_end_time = 结束时间:代理程序在周日不再将呼叫提示发送给操作员的时间。其他情况与weekday_pager_end_time相似。pager_days = 接受消息的日期数字:一个数字,表示操作员可以接受呼叫的日期。它的数据类型为tinyint,默认设置为0,表示操作员不再有空接受呼叫。有效值为0127。pager_days使用不同的数字表示周1周日,如表11-1(见P257)所示。可以通过单值相加计算pager_days的值,例如,周1周5为2+4+8+16+32=62。,22,例11-1,使用sp_add_operator创
12、建操作员zhang,电子邮件地址为zhang,代理程序将从周1至周5上午8点到下午5点半通知操作员。 use msdb exec sp_add_operator name = zhang, email_address =zhang, weekday_pager_start_time = 080000, weekday_pager_end_time = 173000, pager_days = 62,23,(3)使用sp_add_notification存储过程将警报指派给操作员,基本语法如下: sp_add_notification alert_name = 警报名 , operator_na
13、me = 操作员 , notification_method = 通知方式 通知方式:用tinyint数据表示,1表示电子邮件,2表示呼叫程序,4表示net send。,24,例11-2,使用sp_add_notification将警报Demo: Full msdb log指派给操作员zhang,通知方式为net send。 sp_add_notification Demo: Full msdb log, zhang, 4执行sp_add_notification前,需要确认警报名和操作员已经存在。,25,11.2.2 修改和删除操作员,使用企业管理器修改操作员 使用sp_update_ope
14、rator存储过程修改操作员属性 使用sp_update_notification存储过程更新警报的提示方式 使用企业管理器删除操作员 使用sp_delete_operator存储过程删除操作员 使用sp_delete_notification存储过程更新警报的提示方式,26,1使用企业管理器修改操作员,在企业管理器中展开SQL Server实例,展开“管理”目录下的“SQL Server代理”,选择“操作员”,可以查看当前数据库中的操作员列表。用鼠标右键单击操作员名称,在快捷菜单中选择“属性”,打开“操作员属性”对话框,可以修改操作员的属性。,27,2使用sp_update_operator
15、存储过程修改操作员属性,sp_update_operator name=操作员名称, email_address= 电子邮件地址, pager_address = 寻呼地址, weekday_pager_start_time = 开始时间, weekday_pager_end_time = 结束时间, saturday_pager_start_time = 开始时间, saturday_pager_end_time = 结束时间, sunday_pager_start_time = 开始时间, sunday_pager_end_time = 结束时间, pager_days = 接受消息的日期
16、数字,28,例11-3,使用sp_update_operator修改操作员zhang,电子邮件地址为zhang,代理程序将从周1至周6上午8点半到下午6点通知操作员。 use msdb exec sp_update_operator name = zhang, email_address =zhang, weekday_pager_start_time = 083000, weekday_pager_end_time = 180000, pager_days = 126,29,3使用sp_update_notification存储过程更新警报的提示方式,基本语法如下:sp_update_not
17、ification alert_name = 警报名 , operator_name = 操作员 , notification_method = 通知方式,30,例11-4,使用sp_update_notification将警报Demo: Full msdb log指派给操作员lee,通知方式为net send。 sp_update_notification Demo: Full msdb log, lee, 4执行sp_add_notification前,需要确认警报名和操作员已经存在。,31,4使用企业管理器删除操作员,右击操作员,在快捷菜单中选择“删除”项,打开“删除操作员”对话框,对于
18、已经分配给指定操作员的警报,用户可以选择将其重新分配给其他操作员,也可以单击“不重新分配而删除”按钮,将其直接删除。在对话框的下部,列出了当前操作员对应的警报和作业。,32,5使用sp_delete_operator存储过程删除操作员,sp_delete_operation存储过程的基本语法如下: sp_delete_operator name = 操作员名 , reassign_to_operator = 重新指派的操作员名 【例11-5】使用sp_delete_operator删除操作员zhang,并将zhang的警报和作业重新指派给操作员lee。 use msdb exec sp_del
19、ete_operator name = zhang, reassign_to_operator = lee,33,6使用sp_delete_notification存储过程更新警报的提示方式,基本语法如下: sp_delete_notification alert_name = 警报名 , operator_name = 操作员【例11-6】使用sp_delete_notification将取消将警报Demo: Full msdb log指派给操作员zhang。 sp_delete_notification Demo: Full msdb log, zhang,34,11.3 作业管理,创建作
20、业 启动、停止和禁用作业 修改和删除作业,35,11.3.1 创建作业,在企业管理器中展开SQL Server实例,展开“管理”目录下的“SQL Server代理”,选择“作业”,可以查看当前数据库中的作业列表。,36,创建一个定时备份数据库“学生管理”的作业,常规设置 步骤设置 调度设置 通知设置,37,1. 常规设置,右键单击“作业”项,在快捷菜单中选择“新建作业”,打开“新建作业属性”对话框。在“常规”选项卡中输入作业名称、分类、所有者和描述信息 。,38,2. 步骤设置,单击“步骤”选项卡,配置作业的步骤。单击“新建”按钮,打开“新建作业步骤”对话框。,输入步骤名,在“命令”框中输入下
21、面的语句:EXEC sp_addumpdevice disk, 备份文件, c:学生管理.bakBACKUP DATABASE 学生管理 TO 备份文件,39,3. 调度设置 1,单击“调度”选项卡,可以设置作业执行的时间,或指定在警报发生时执行作业,40,3. 调度设置 2,单击“新建调度”按钮,打开“新建作业调度”对话框。输入调度名称,然后选择调度类型。,41,3. 调度设置 3,有4种可供选择的调度类型,包括:SQL Server代理启动时自动启动。每当CPU闲置时启动。一次(只执行一次作业)。反复出现。,42,3. 调度设置 3,如果选择“反复出现”,默认的执行时间为“每1周在星期日发
22、现,在0:00:00”。如果需要修改,则单击“更改”按钮,打开“编辑反复出现的作业调度”对话框,43,3. 调度设置4,“新建作业属性”对话框的“调度”选项卡中,单击“新建警报”按钮,打开“新建警报属性”对话框。用户可以选择警报的错误号或严重度,输入错误信息包含的文本。,44,4. 通知设置,单击“通知”选项卡,可以设置作业执行完成后的操作。设置完成后,单击“确定”按钮保存。,45,11.3.2 启动、停止和禁用作业,在企业管理器中,右键单击一个作业,在快捷菜单中选择“启动作业”,则作业开始运行。选择“停止作业”,则作业停止运行。选择“禁用”作业,则作业的启用状态被设置成否,在指定的时间内不在
23、执行作业。,46,11.3.3 修改和删除作业,在企业管理器中,右键单击一个作业,在快捷菜单中选择“属性”,打开“作业属性”对话框。修改作业与创建作业的过程相似。右键单击一个作业,在快捷菜单中选择“删除”,可以删除指定的作业。,47,11.4 警报管理,创建警报 修改和删除警报,48,11.4.1 创建警报,展开SQL Server实例,展开“管理”目录下的“SQL Server代理” 选择“警报”,可以查看当前数据库中的警报列表,如下图:,49,“新建警报属性”对话框,右键单击“警报”项,在快捷菜单中选择“新建警报”,打开“新建警报属性”对话框。SQL Server支持两种类型的警报,即SQ
24、L Server事件警报和SQL Server性能条件警报。,50,1. 设置SQL Server事件警报,错误号: SQL Server 代理程序在发生特定的错误时发出警报。单击后面“”按钮,可以打开“管理SQL Server消息”对话框,查询相关的错误。例如,在文本框中输入“连接”,然后单击“查找”按钮,可以找到所有包含连接的错误。严重度: SQL Server 代理程序在发生特定严重度的错误时发出警报。数据库名称:若要对警报进行限制,可以指定事件所发生的数据库。错误信息包含的文本:若要对警报进行限制,在事件消息中指定一个文本字符串。,51,设置错误号,52,2. 设置SQL Server
25、性能条件警报,在“新建警报属性”对话框中,类型选择“SQL Server性能条件警报”,如下图。用户可以指定对象、计数器、实例和计数器的报警条件等。,53,2. 设置SQL Server性能条件警报,对象:要监视的 SQL Server 性能对象,例如要创建数据库备份还原方面的警报,可以选择SQL Server:Databases。计数器:所监视部分的属性。性能数据被周期性地采样,这会在达到阈值与发出性能警报之间造成短暂的延迟(几秒钟)。实例:所监控的属性的特定实例,_Total表示所有实例。有些对象不需要指定实例。计数器的报警条件。,54,3. 设置警报响应,在“新建警报属性”对话框中,单击“响应”选项卡,可以设置发生警报时执行的作业和要通知的操作员,如下图:,55,11.4.2 修改和删除警报,在企业管理器中,用鼠标右击一个警报,在快捷菜单中选择“属性”,打开“警报属性”对话框。修改警报与创建警报的过程相似。用鼠标右键单击一个警报,在快捷菜单中选择“删除”,可以删除指定的警报。,