第十一篇 SQL Server代理维护计划
本篇文章是SQL Server代理系列的第十一篇,详细内容请参考原文
在这一系列的上一篇,我们看了使用代理帐户模仿Windows安全上下文完成作业步骤的工作。大多数子系统支持代理账户,同时子系统限制代理账户,要求用户必须明确授权可以在作业步骤使用代理凭据。在这一篇,你将检查维护计划。维护计划是用来执行各种任务来优化你的数据库,包括备份、重建和/或重整索引、更新统计。维护计划会创建作业。这一篇我们将查看维护计划,并查看维护计划所创建的作业。
维护计划概述
维护计划是一个非常漂亮的图形界面来帮助你维护SQL Server数据库的常见任务。使用维护计划是一个很好的捷径,而不是手动创建正确的T-SQL或PowerShell脚本来执行这些日常维护任务。这些任务包括:
->检查数据库完整性
->收缩数据库
->重新组织索引
->重新生成索引
->更新统计信息
->清除历史记录
->执行SQL Server代理作业
->备份数据库
->"清除维护"任务
字面上你能明白这些任务能做的,但你也可以进一步了解http://msdn.microsoft.com/en-us/library/ms140255.aspx。如果你查看链接你会注意到你在阅读SQL Server Integration Services(SSIS)任务。这是因为维护计划事实上是SSIS包易于DBA创建和维护。
每一个维护计划由一个或多个子计划组成。每一个子计划可以运行于不同的调度(因为它们是SQL Server代理下独立的作业)。你只能逻辑上将维护计划中的子计划关联到一起。你可以有多个维护计划,维护计划可以应用于一个或多个数据库。
创建维护计划
首先你会注意到,维护计划并没有在SQL Server代理下面。导航到管理->维护计划。数据库上默认是没有创建维护计划的。右击维护计划,你可看到"新建维护计划"和"维护计划向导",大部分人发现使用向导创建维护计划更快捷方便。启动它,然后你会看到图11.1所示界面
图11.1 启动维护计划向导
点击下一步,给维护计划取个名字。例如,你打算在AdventureWorks数据库上执行维护任务,因此你可以命名为AdventureWorks Maintenance。键入说明,选择"每项任务单独计划"来查看一个复杂的代理作业调度。如图11.2所示
图11.2 选择计划属性
点击下一步,然后选择你要执行的维护任务,选择"检查数据库完整性"、"更新统计信息"、"备份数据库(完整)",如图11.3所示
图11.3 选择维护任务
点击下一步,选择执行任务的顺序。继续下一步,你会看到定义"数据库检查完整性"面板,从数据库列表中选择AdventureWorks,如图11.4所示。注意,你可以选择多个数据库,所有数据库,系统数据库,所有用户数据库。你也可以勾选"忽略未处于联机状态的数据库",避免你选择维护所有数据库时出错。
图11.4 选择数据库
点击确定,点击底部计划的修改按钮。你将看到一个标准的作业调度对话框,如图11.5所示。在本例中,按默认设置。
图11.5 创建计划调度
点击确定,你会注意到AdventureWorks数据库已经被选择在特定数据库下,计划下面更新成每周调度。点击下一步,你会看到"更新统计信息"任务,数据库列表选择AdventureWorks,其他默认,并创建默认的作业调度。
点击下一步,来到"备份数据库(完整)"任务,选择AdventureWorks数据库,其他默认(可以勾选"验证备份完整性"),同样创建默认计划调度(图11.6所示)。
图11.6 创建数据库备份任务
点击下一步,你会看到一个选择报告选项,默认是保存到数据库ErrorLog日志文件夹下,你可将报告发送一份给someone,如果你配置了数据库邮件。接受默认然后点击下一步,完成向导。这个向导将运行,创建维护计划,在完成后会有成功信息返回,如图11.7所示
图11.7 维护计划向导完成
如果你想看看在维护计划向导的结果界面,你可以刷新维护计划文件夹,然后双击新创建的维护计划,如图11.8所示
图11.8 查看维护计划
关闭维护计划,并导航到SQL Server代理的作业文件夹。现在你将看到三个新的作业,维护计划中的每一个子计划对应一个作业(如图11.9所示)。你有三个不同的子计划因为你选择有三个单独的计划。
图11.9 维护计划作业
打开AdventureWorks maintenance.subplan_1作业,然后点击步骤,然后打开步骤subplan_1。你会发现步骤类型为"SQL Server Integration Services包"(如图11.10所示)。如果你熟悉SSIS的技能,你可以手动编辑属性,但不建议这样,因为你可能打断图形界面维护计划正常运行;然而,你可以指定代理帐户和配置连接信息。
图11.10 维护计划作业步骤
你可以返回作业,然后更改作业的调度。你可能已经发现,当前这个例子不能很好的按照顺序执行,因为它们配置在同一时间。所以,选择一个合适的计划会更有意义。
在作业活动监视器下查看维护计划作业
维护计划所创建的每一个作业都放在一个特殊的作业类别-“数据库维护”。你可以在作业活动监视器下使用筛选功能。打开作业活动监视器,点击筛选…按钮。“类别”,键入“数据库维护”(不幸的是你必须键入它,没有下拉菜单选择现有的类别)。勾选应用筛选器,然后点击确定。现在你应该只能看到维护计划的作业,可以更容易地检查你的维护计划作业的执行和结果(如图11.11所示)。
图11.11 活动监视器中筛选维护计划作业
下一篇
维护计划作业是一种简便的方式来维护数据库的日常管理。维护计划的实质是由作业、作业步骤、计划支撑。你需要了解这些工作的性质,以确保你不会打破或删除它们。
在我们的最后一篇,我们将查看使用SQL Server代理的MSX/TSX功能扩展作业管理到多台服务器。
第十一篇 SQL Server代理维护计划的更多相关文章
- 【译】第十一篇 SQL Server代理维护计划
本篇文章是SQL Server代理系列的第十一篇,详细内容请参考原文 在这一系列的上一篇,我们看了使用代理帐户模仿Windows安全上下文完成作业步骤的工作.大多数子系统支持代理账户,同时子系统限制代 ...
- 第十篇 SQL Server代理使用代理帐户
本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...
- 【译】第十篇 SQL Server代理使用代理帐户
本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...
- 第九篇 SQL Server代理了解作业和安全
本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
- 第八篇 SQL Server代理使用外部程序
本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这一系列的上一篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Ser ...
- 第六篇 SQL Server代理深入作业步骤工作流
本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...
- 第五篇 SQL Server代理理解代理错误日志
本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...
- 【译】第九篇 SQL Server代理了解作业和安全
本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
- 【译】第八篇 SQL Server代理使用外部程序
本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这一系列的上一篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Ser ...
随机推荐
- Python学习笔记(2):数据库访问
本来打算继续用Access的,但费了非常大的劲,还是没有搞定.回过头,发现使用sqlite,简单到令人发指.干脆,把C#的CommonCode往这边迁移,先把AccessDB搬过来再说. 类结构和C# ...
- 解决VS2010中在项目上右键鼠标,无“添加STS引用”菜单的问题
解决方法:将Windows Identity Foundation SDK文件夹C:\Program Files (x86)\Windows Identity Foundation SDK\v3.5\ ...
- mysql中You can’t specify target table for update in FROM clause错误解决方法
mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...
- 《STL系列》之vector原理及实现
最近忙得蛋疼,但还是想写点属于自己的东西.也不知道写点啥,最后决定试着自己实现STL中常用的几个集合,一来加深自己对STL的理解,二来看看自己是否有这个能力实现.实现目标就是:1能和STL兼容:2最大 ...
- [C] c99int(让VC等编译器自动兼容C99的整数类型)V1.02。源码托管到github、添加CMake编译配置文件、使用doxygen规范注释
新版本—— http://www.cnblogs.com/zyl910/p/zlstdint_v100.html[C] zlstdint(让VC.TC等编译器自动兼容C99的整数类型)V1.0.支持T ...
- PHP in_array效率问题
in_array的效率问题就是在比较上,默认要比较的字符串转成整形,所以耗费时间.可以使用强制类型比较 in_array($x, $arr, TRUE);
- jsp中表格,表格中的文字根据表格的大小自动换行
style="table-layout: fixed;WORD-BREAK: break-all; WORD-WRAP: break-word" 语法: word-break : ...
- LCLFramework框架之Service模式
Service模式介绍 领域中的一些概念不太适合建模为对象,即归类到实体对象或值对象,因为它们本质上就是一些操作,一些动作,而不是事物.这些操作或动作往往会涉及到多个领域对象,并且需要协调这些领域对象 ...
- whoami 和 Who am i
① 两个命令在一般的情况下,似乎效果是一样的 ② 但是当你执行完su 命令切换用户后,就不一样了,who am i 显示最早login的账户,而whoami 显示切换后的账户 例如: -bash-3. ...
- Hadoop - Zeppelin 使用心得
1.概述 在编写 Flink,Spark,Hive 等相关作业时,要是能快速的将我们所编写的作业能可视化在我们面前,是件让人兴奋的时,如果能带上趋势功能就更好了.今天,给大家介绍这么一款工具.它就能满 ...