自动化管理任务.docx
《自动化管理任务.docx》由会员分享,可在线阅读,更多相关《自动化管理任务.docx(26页珍藏版)》请在冰点文库上搜索。
自动化管理任务
自动化管理任务
SQLServer2005提供了多种自动化方式帮助用户管理数据库,主要包括SQLServer代理(Agent)、维护计划、作业和警报等,它们统称为自动化管理任务。
这些自动化管理任务能够自动地完成预先定义好的活动,从而简化管理员的工作,并且可以避免管理员的误操作。
本章将详细介绍如何利用这些自动化管理任务来实现对SQLServer2005数据库的自动化管理,主要包含以下知识点。
SQLServer代理
维护计划
作业
警报
操作员
一、SQLServer代理
SQLServer代理是SQLServer2005数据库自动化管理任务的核心,它提供了系统的自动化处理机制,与SQLServer2005数据库引擎紧密集成,以下介绍SQLServer代理的基本概念与常见操作。
1SQLServer代理简介
SQLServer代理是指代替用户去做一系列的操作,可以将SQLServer代理服务进程看作一个虚拟的用户,这个虚拟用户可以自动地去完成一系列预先指定好的工作。
SQLServer代理实际上是一种MicrosoftWindows服务,它执行安排的管理任务,即“作业”。
SQLServer代理将大部分配置信息存储在msdb数据库的表中,并使用SQLServer2005凭据对象来存储代理的身份验证信息。
因此,SQLServer代理服务的启动依赖于SQLServer2005数据库引擎服务的启动。
用户定义的作业包含一个或多个作业步骤。
每个步骤都有自己的任务。
SQLServer代理可以按照计划运行作业,也可以在响应特定事件时运行作业,还可以根据需要运行作业。
若要使用SQLServer代理来进行自动化管理,按以下步骤进行操作:
(1)确定哪些管理任务或服务器事件定期执行以及这些任务或事件是否可以通过编程方式进行管理。
如果任务涉及一系列可预见的步骤并且在特定时间或响应特定事件时执行,则该任务非常适合自动化。
(2)使用SQLServerManagementStudio、Transact-SQL脚本或SQLServer管理对象(SMO)定义一组作业、计划、警报和操作员。
(3)运行已定义的SQLServer代理作业。
如果正在运行SQLServer2005数据库服务器的多个实例,则可以使用多服务器管理来自动管理所有实例的公共任务。
2SQLServer代理组件
SQLServer代理使用以下自动管理组件来定义要执行的任务、执行任务的时间以及报告任务成功或失败的方式。
2.1作业
“作业”是SQLServer代理执行的一系列指定操作。
使用作业可以定义一个能执行一次或多次的管理任务,并能监视执行结果是成功还是失败。
作业可以在一个本地服务器上运行,也可以在多个远程服务器上运行。
可以通过以下几种方式来运行作业:
根据一个或多个计划;
响应一个或多个警报;
通过执行sp_start_job存储过程。
作业中的每个操作都是一个“作业步骤”。
作业步骤作为作业的一部分进行管理。
所有作业步骤均在特定的安全上下文中运行。
对于使用Transact-SQL的作业步骤,可以使用EXECUTEAS语句设置作业步骤的安全上下文。
对于其他类型的作业步骤,则可以使用代理帐户来设置作业步骤的安全上下文。
2.2计划
“计划”指定了作业运行的时间。
多个作业可以根据一个计划运行,多个计划也可以应用到一个作业。
计划可以为作业运行的时间定义下列条件:
每当SQLServer代理启动时;
每当计算机的CPU使用率处于定义的空闲状态水平时;
在特定日期和时间运行一次;
按重复执行的计划运行。
2.3警报
“警报”是对特定事件的自动响应。
可以定义警报产生的条件。
警报可以响应以下任一条件:
SQLServer事件;
SQLServer性能条件;
运行SQLServer代理的计算机上的MicrosoftWindowsManagementInstrumentation(WMI)事件。
警报可以执行以下操作:
通知一个或多个操作员;
运行作业。
2.4操作员
“操作员”定义的是负责维护一个或多个SQLServer2005实例的个人联系信息。
在有些企业中,操作员职责被分配给一个人。
在拥有多个服务器的企业中,操作员职责可以由多人分担。
操作员既不包含安全信息,也不会定义安全主体。
SQLServer2005可以通过下列一种或多种方式通知操作员有警报出现:
电子邮件;
寻呼程序(通过电子邮件);
netsend。
可以将操作员定义为一组个人的别名。
这样,该组的所有成员就可以同时收到通知。
3配置SQLServer代理
SQLServer代理服务进程要在操作系统上运行时,和普通的用户一样,需要以一定的身份去运行,这个身份是就服务启动账户。
服务启动账户
服务启动帐户可以定义运行SQLServer代理的Windows帐户及其网络权限。
SQLServer代理在指定的用户帐户下运行。
(1)内置帐户。
可以从下列内置Windows服务帐户的列表中选择:
“本地系统”帐户。
“网络服务”帐户。
(2)本帐户。
使用户可以指定运行SQLServer代理服务的Windows域帐户。
验证必要的Windows权限
在SQLServer2005中,必须将SQLServer代理配置为使用sysadmin固定服务器角色的成员帐户的凭据,才能执行其功能。
该帐户必须拥有以下Windows权限:
调整进程的内存配额;
以操作系统方式操作;
作为批处理作业登录;
作为服务登录;
替换进程级记号。
验证已设置了所有必要的Windows权限,具体操作过程如下:
(1)单击“开始”菜单,依次选择“程序”|“管理工具”|“本地安全策略”命令,打开“本地安全设置”对话框。
(2)依次展开“本地策略”|“用户权利指派”节点,打开“本地安全设置”窗口。
(3)对上面列出的每个权限重复以下操作。
双击该权限,弹出相应的对话框,验证运行SQLServer代理的服务帐户是否已列出。
如果没有列出,单击“添加用户或组”按钮,输入运行SQLServer代理的帐户,然后单击“确定”按钮。
4启动和停止SQLServer代理服务
SQLServer代理必须作为服务运行,以便自动化管理任务。
用户可以配置SQLServer代理服务,使其在操作系统启动时自动启动,也可以在需要完成作业时手动启动。
可以停止或暂停SQLServer代理服务以挂起作业、操作员通知和警报。
注意:
默认情况下,MicrosoftSQLServer2005安装后SQLServer代理服务是禁用的。
用户可以利用“SQLServer配置管理器”来配置SQLServer代理服务的启动方式为“自动”模式,随操作系统启动而自动运行。
其方法是在“SQLServerAgent属性”对话框中,选择“服务”选项卡,配置“启动模式”选项为“自动”模式。
启动SQLServer代理服务
使用“SQLServer配置管理器”工具启动SQLServer代理服务,具体操作过程如下:
(1)依次选择“开始”|“所有程序”|“MicrosoftSQLServer2005”|“配置工具”,然后选择“SQLServer配置管理器”,打开“SQLServer配置管理器”对话框。
(2)展开“SQLServer2005服务”节点。
(3)右击“SQLServerAgent”服务器实例,在弹出的快捷菜单中选择“启动”命令,即可启动SQLServerAgent代理服务。
停止或重新启动SQLServer代理服务
使用“SQLServer配置管理器”工具停止或重新启动SQLServer代理服务,具体操作过程如下:
(1)依次选择“开始”|“所有程序”|“MicrosoftSQLServer2005”|“配置工具”,然后选择“SQLServer配置管理器”,打开“SQLServer配置管理器”对话框。
(2)展开“SQLServer2005服务”节点。
(3)右击“SQLServerAgent”服务器实例,在弹出的快捷菜单中选择“停止”或“重新启动”命令,即可停止或重新启动SQLServer代理服务。
5SQLServer代理的安全性
SQLServer代理使数据库管理员能够在一个安全上下文中运行每个作业步骤,这个安全上下文只具有执行该作业步骤所需的权限,这是由SQLServer代理决定的。
若要为某个特定的作业步骤设置权限,可以创建一个具有所需权限的代理,然后将该代理分配给该作业步骤。
一个代理可以指定给多个作业步骤。
对于需要相同权限的作业步骤,可以使用同一个代理。
SQLServer代理固定数据库角色
SQLServer2005引入了下列msdb数据库固定数据库角色,使管理员可以更好地控制对SQLServer代理的访问。
下面按从低到高的访问权限列出了角色:
SQLAgentUserRole角色
SQLAgentReaderRole角色
SQLAgentOperatorRole角色
如果用户不是其中某个角色的成员,连接到SQLServerManagementStudio中的SQLServer时,对象资源管理器中的“SQLServer代理”将不可见。
用户必须是这些固定数据库角色之一的成员,或者是sysadmin固定服务器角色的成员才能使用SQLServer代理。
SQLServer代理子系统
“子系统”是预定义的对象,它表示可用于MicrosoftSQLServer代理的代理帐户的一组功能。
每个代理都可以访问一个或多个子系统。
子系统可以提供安全性,因为它们分隔了对可用于代理的功能的访问。
除了Transact-SQL作业步骤,每个作业步骤都在代理的上下文中运行。
Transact-SQL作业步骤使用EXECUTEAS命令设置安全上下文。
SQLServer代理中包括了若干代理子系统。
可以在“对象资源管理器”窗口中,依次展开“SQLServer代理”|“代理”节点来查看。
在创建作业步骤的时候,还可以创建Transact-SQL作业步骤。
Transact-SQL作业步骤只是在数据库内部执行,因此不需要代理子系统,所有没有针对Transact-SQL作业步骤的SQLServer代理子系统。
创建代理账户
SQLServer代理的代理帐户用于定义作业步骤的安全上下文。
代理帐户向SQLServer代理提供访问Windows用户安全凭据的权限。
每个代理帐户都可以与一个或多个子系统相关联。
使用代理帐户的作业步骤可以通过使用Windows用户的安全上下文来访问指定子系统。
SQLServer代理运行使用代理帐户的作业步骤之前,将模拟代理帐户中定义的凭据,然后使用该安全上下文来运行作业步骤。
使用SQLServerManagementStudio来创建SQLServer代理的代理帐户,具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”节点。
(3)右击“代理”节点,在弹出的快捷菜单中选择“新建代理”命令,打开“新建代理帐户”对话框。
(4)选择“常规”选项。
首先指定新代理的“代理名称”、“凭据名称”和“说明”,然后在“对以下子系统有效”的区域中选择该代理帐户对哪些子系统是有效的,如图所示:
(5)单击“确定”按钮,完成代理帐户的创建操作。
此时,即可在“代理”节点下的每个SQLServer代理子系统节点下看到刚才新建的代理帐户。
二、维护计划
维护计划用于创建自动运行的维护工作,用户可以通过维护计划实现自动定期备份数据库、检查数据库可能出现错误的一些特性等功能。
用户可以通过维护计划向导设置核心维护任务,从而确保数据库执行良好。
事实上维护计划向导通过创建一个或多个SQLServer代理作业,这些代理作业将按照计划的间隔自动执行这些维护任务。
1可以自动运行的维护计划
维护计划可以实现自动维护任务,SQLServer2005数据库实现的可以自动维护的任务主要包括以下种类。
检查数据库完整性
收缩数据库
重新组织索引
重新生成
更新统计信息
清除历史记录
执行SQLServer代理作业
备份数据库(完整)
备份数据库(差异)
备份数据库(事务日志)
2使用向导创建维护计划
维护计划向导提供了一个友好的界面,来帮助用户设置核心维护任务。
它经常用于检查数据库完整性、压缩数据库、重新组织索引、重新生成索引、更新统计信息、清除历史记录、备份数据库等操作,从而确保数据库运行正常。
维护计划向导可创建一个或多个SQLServer代理作业,代理作业可对多服务器环境中的本地服务器或目标服务器执行这些任务。
可以按预订的时间间隔执行任务也可以按需执行任务。
10.2.3手工创建维护计划
尽管可以使用“维护计划向导”轻松地创建维护计划,但是手动创建这些计划具有更大的灵活性。
三、作业
作业是一系列由SQLServer代理按顺序执行的指定操作。
作业包含一个或多个作业步骤,每个步骤都有自己的任务。
作业可以执行一系列活动,包括运行Transact-SQL脚本、命令行应用程序、MicrosoftActiveX脚本、IntegrationServices包、AnalysisServices命令和查询或复制任务。
作业可以运行重复任务或那些可计划的任务,并且可以通过生成警报来自动通知用户作业状态,从而极大地简化了SQLServer管理。
可以手动运行作业,也可以将作业配置为根据计划或响应警报来运行。
1创建作业
用户可以使用SQLServerManagementStudio工具或者Transact-SQL语句代码来创建作业。
1.1使用图形工具创建作业
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”节点。
(3)右击“作业”节点,在弹出的快捷菜单中选择“新建作业”命令,打开“新建作业”对话框。
(4)选择“常规”选项。
在“名称”文本框中输入作业的名称。
在“所有者”文本框中直接输入一个有效的登录名,或者通过右侧的按钮查找输入。
在“类别”下拉列表框中选择该作业的类别。
在“说明”中输入对作业功能的说明。
如果不希望在创建作业后立即运行作业,取消选中“已启用”复选框。
设置好“常规”选项所对应的页面,如图所示:
(5)单击“确定”按钮,完成作业的创建。
此时,用户即可在“对象资源管理器“窗口中,依次展开”SQLServer代理”|“作业”节点,来查看和管理刚创建好的作业。
1.2创建其他用户的作业
作为数据库管理员,有时要为其他用户创建作业,创建后将作业的所有权授予此人。
具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”|“作业”节点。
(3)右击某个作业,在弹出的快捷菜单中选择“属性”命令,打开“作业属性”对话框。
(4)单击“所有者”文本框右侧的按钮,在打开的“选择登录名”对话框中,选择一个登录名。
(5)单击“确定”按钮,完成所有权的授予。
1.3使用存储过程创建SQLServer代理作业
使用SQLServer代理作业也可以使用Transact-SQL代码来完成,通过与作业相关的存储过程来实现。
使用存储过程创建SQLServer代理作业,可以参考以下存储过程:
(1)执行sp_add_category将指定的作业加到服务器中。
(2)执行sp_add_job创建作业。
(3)执行sp_add_jobstep创建一个或多个作业步骤。
(4)执行sp_add_schedule创建计划。
(5)执行sp_attach_schedule将计划附加到作业。
(6)执行sp_add_jobserver设置作业的服务器。
2创建作业步骤
作业步骤是作业对数据库或服务器执行的操作。
每个作业必须至少有一个作业步骤。
作业步骤可以为可执行程序和操作系统命令、Transact-SQL语句(包括存储过程和扩展存储过程)、MicrosoftActiveX脚本、复制任务、AnalysisServices任务和IntegrationServices包等。
使用SQLServerManagementStudio工具来创建作业步骤,实现对“pubs”数据库的完整备份。
具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”节点。
(3)右击“作业”节点,在弹出的快捷菜单中选择“新建作业”命令,打开“新建作业”对话框。
在该对话框中输入相应的内容。
(4)选择“步骤”选项。
(5)单击“新建”按钮,打开“新建作业步骤”对话框。
选择“常规”选项。
在“步骤名称”文本框中,输入相应的步骤名称;在“类别”列表中,选择“Transact-SQL脚本(T-SQL)”类型;在“数据库”列表中选择pubs数据库;在“命令”区域中,打开文件或直接输入要执行的Transact-SQL脚本语句。
如图所示:
选择“高级”选项,可以设置该作业步骤的高级特性。
(6)单击“确定”按钮,即可完成该作业步骤的创建操作,返回“新建作业”对话框的“步骤”选项所对应的页面。
此时,即可在“作业步骤列表”中看到刚才创建的作业步骤。
(7)单击“确定”按钮,完成作业步骤的创建操作。
3创建作业计划
通过作业计划可以定义作业开始运行的条件。
可以为任何类型的作业建立计划,并且多个作业可以使用同一个作业计划。
制定完作业计划后,SQLServer代理可以根据计划自动运行作业。
使用SQLServerManagementStudio工具来创建作业计划,定期地对“pubs”数据库进行完整备份。
具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”|“作业”节点。
(3)右击某个作业,在弹出的快捷菜单中选择“属性”命令,打开“作业属性”对话框。
(4)选择“计划”选项。
(5)单击“新建”按钮,打开“新建作业计划”对话框。
在“名称”文本框中输入相应的名称,并设置作业计划为“在每周星期日的0:
00:
00执行”,如图所示:
(6)单击“确定”按钮,即可完成该作业计划的创建操作,并返回“作业属性”对话框的“计划”选项所对应的页面。
此时,即可在作业“计划列表”中看到刚才创建的作业计划。
(7)在“作业属性”对话框中,单击“确定”按钮,完成作业计划的创建操作。
4查看和修改作业
用户可以根据需要适时地查看作业及作业的运行情况,或者修改作业的定义。
查看和修改作业
使用SQLServerManagementStudio工具来查看指定的作业,具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”|“作业”节点。
(3)右击某个作业,在弹出的快捷菜单中选择“属性”命令,打开“作业属性”对话框,即可选择任意的选项页来查看和修改该作业的定义,如图所示:
查看作业的活动
使用SQLServerManagementStudio工具来查看指定的作业,具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”节点。
(3)右击“作业活动监视器”节点,在弹出的快捷菜单中选择“查看作业活动”命令,打开“作业活动监视器”对话框(也可双击“作业活动监视器”节点来打开对话框),如图所示:
在“代理作业活动”网格中,可以查看为此服务器定义的每个作业的详细信息,还可以双击某个作业行,打开“作业属性”对话框,来查看和修改该作业定义。
若要启用、禁用、停止或删除作业,只需选择一个或多个行(作业),然后右击所选内容,在弹出的快捷菜单中选择相应的命令即可。
若要更新作业活动监视器,单击“刷新”按钮。
若要查看较少的行,单击“筛选”按钮,然后输入筛选参数。
(4)单击“关闭”按钮,完成查看作业活动的操作。
删除作业
使用SQLServerManagementStudio工具来删除作业,具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”|“作业”节点。
(3)右击某个作业,在弹出的快捷菜单中选择“删除”命令,打开“删除对象”对话框,确认选择了要删除的作业。
(4)单击“关闭”按钮,完成该作业的删除操作。
5运行作业
使用SQLServerManagementStudio工具可以用来启动或禁用作业,还可以手动开始或停止作业。
启动或禁用作业
如要启动或禁用作业,具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”|“作业”节点。
(3)右击某个作业,在弹出的快捷菜单中选择“启用”或“禁用”命令即可启动或禁用作业。
手动开始或停止作业
若要手动开始或停止作业,具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”|“作业”节点。
(3)右击某个作业,在弹出的快捷菜单中选择“作业开始步骤”或“停止作业”命令即可开始或停止作业。
6查看作业历史日志
用户可以通过SQLServerManagementStudio工具来查看作业运行的历史信息,也可以调整作业日志记录的大小等,以确保作业维护的可用性。
查看作业历史记录
使用SQLServerManagementStudio工具来查看作业的历史记录,具体操作过程如下:
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“SQLServer代理”|“作业”节点。
(3)右击某个作业,在弹出的快捷菜单中选择“查看历史记录”命令,打开“日志文件查看器”对话框,如图所示:
可以在“日志文件摘要”网格中,查看该作业的历史记录。
若要更新作业的历史记录,单击“刷新”按钮。
若只需要查看其中的几行,单击“筛选”按钮并输入筛选参数。