发布时间:2015-11-25 00:00 来源:未知
SQL Server的每一个版本都已经逐渐变得越来越自我调整和自我维护了。然而,对于基本维护的需求,例如删除索引碎片,更新统计数据,检查数据库一致性,以及进行备份仍然是不会消失的。你可以想象一下,索引的维护就像是给你的汽车换油,备份就像是买保险。你可以没有保险,但是一旦你需要它,它就在手边。同样的,你的汽车可以在没有换油的情况下跑上几千公里,但是经常维护会产生更好的性能,并且可以让你的汽车寿命延续几年。
SQL Server 2005把维护计划以SSIS包的方式予以实现,它为任务的定制提供更大的灵活性。现在开始计划你要执行的Transact-SQL命令,以便察看,而不要用没有文档记载的SQL Server 2000中的存储过程。另一个你可以检查的领域是执行历史,它可以使解决问题的维护计划在很大程度上简单化。
目录表
SQL Server 2000中的维护计划
使用向导创建一个维护计划
在你的SSIS包的后面
改善SQL Server 2005
SQL Server 2000中的维护计划
让我们简单地回顾一下SQL Server 2000中的数据库维护计划是什么样子。你通过点击一些向导的界面创建一个维护计划,它让你选择完全备份、事务日至备份,索引维护和检查数据库一致性的选项。这听起来很简单,是吗 是的,除非维护计划是个“黑盒子”向导并没有显示给你刚才创建的任务会执行的Transact-SQL语句。
更进一步地讲,假如你曾经检查过通过维护计划向导创建的任务的属性,你就会知道任务的步骤看起来是下面这个样子:
EXECUTE master.dbo.xp_sqlmaint N'-PlanID 7BCCF8E2-B8F4-4B92-BC3B-
F2FA1BAE25C0 -WriteHistory -VrfyBackup -BkUpMedia DISK -BkUpDB -UseDefDir -BkExt "BAK"'
为了了解这个维护计划屏幕之后的事情,你必须让你自己熟悉xp_sqlmaint扩展存储程序。这个程序也叫做 SQLMAINT工具,大概有一打的开关。此外,你还可以从命令行调用SQLMAINT。假如维护计划任务在任务历史中曾经失败过,在任务历史中显示了如下完全没有意义的信息片断的话,也许这样更重要:
Executed as user: ServerName\UserName. sqlmaint.exe failed. [SQLSTATE 42000] (Error 22029). The step failed.
幸运的是,你可以浏览到数据库维护计划的文件目录中,右击计划,并且选择“维护计划历史”来获得更加详细的错误信息。然而,即使是这样的解决问题的方法在碰到维护计划任务不总是可靠的时候,也会出错。
在nutshell SQL Server2000 维护计划向导中,创建重要维护任务非常简单,但是从可用性和支持的角度来说,就差得远了。
与维护计划的其他图形一样,在SQL Server2005中也有很大的改善。现在,维护计划是以SQL Server集成服务(SSIS)包的形式实现的;这就允许在包含在维护计划中的任务之间创建优先约束。假如你还没有使用SSIS的话,这个消息也许会对你造成威胁——但是不要担心,你仍然可以通过使用SQL Server管理套件(SSMS)中的向导来建立一个维护计划。在SSIS中构建维护计划,将会提供额外的灵活性,但是向导会帮助你开始,并且让你构建一个可靠的维护计划,而不需要你对SSIS有任何的了解,正如你下面将要看到的。
使用向导创建一个维护计划
要通过使用向导来创建一个维护计划,首先浏览到SSMS的管理目录,右击“维护计划”文件夹,然后选择维护计划向导。注意,SQL Server Agent服务必须要运行起来,在你创建数据库维护计划的时候。最开始的向导界面允许你选择目标数据库,并且指定连接到服务器上必需的安全信任书。接下来,你就可以选择你想要执行的维护任务,如下图所示:
屏幕截图1: 选择维护任务
这个屏幕给你一个有关你想要完成的每一种类型的维护任务的大概描述。
接下来,你可以定义维护计划任务的执行顺序。例如,你可以在查看数据库一致性并且运行一个完全的数据库备份之前重新构建索引。然后,你就可以指定每个任务可能会影响到的目标数据库和对象。例如,重新构建索引可能会影响到单个的数据库,多个数据库,或者某个环境下的所有数据库。此外,你还能选择在哪个特定的表和索引视图上面重新构建索引。你还可以为重新构建索引制定一些高级选项,例如,你想要留给索引页面使用的空闲空间总量,无论你是否想要填充索引,还是你想要在重新构建它们的时候,还让它们在线。指定索引选项的屏幕如下所示:
屏幕截图2: 指定索引选项
接下来,为你想要执行的维护计划定义时间表。或者你还可以根据需要来运行维护计划。接下来的向导界面允许你指定记录维护计划执行过程中状态日至的文本文件。你可以指定电子邮件地址,以便将维护计划执行状态发送给你。最后一个屏幕提供了你在过去不久的文章里几个界面上选择的主要的维护计划选项。就是它了!正如我先前说过的,你不需要了解SSIS就可以创建一个数据库维护计划。
在你的SSIS包后面的内容
现在,让我们看看实际上在构建过程中发生了什么。要查看你刚刚创建的SSIS包,右击维护计划,然后选择“修改”。你就可以看到类似下面的画面:
屏幕截图3:查看SSIS 包
注意,蓝色箭头指出了执行的流程;蓝色的表示数据库一致性将会在“重新构建索引”任务完成之后进行检查。这个向导指挥让你评估是否每个任务都在执行下个任务之前完成了;所以,无论“重新构建索引”的任务成功了或者是失败了,维护计划都会继续执行下一步的检查数据库一致性任务。但是假如你想要按照某种条件来执行不同的任务,就是前面的任务是失败还是成功了 假如你双击蓝色箭头,SSIS就会允许你编辑优先约束,如下图所示:
屏幕截图4: 编辑优先约束.
从这个界面,你可以评估每个任务的执行结果,并且基于成功、失败,或者前面某个任务的完成来调用剩下的任务。你可以在执行其他任务之前,检查一个连接当前任务的表达式。这就是SSIS之所以特别好用的原因之一。
SQL Server 2005的改善
非常希望你能喜欢维护计划向导所作的改善,还有你可以通过点击向导屏幕来创建的SSIS包。但是这只是改善中很小的一部分!
SQL Server 2005可以让你查看通过维护向导的每个步骤创建的Transact-SQL命令。SQLMAINT工具(与xp_sqlmaint扩展存储过程一起),都被宣布不再被支持。在维护计划的头巾之下,仍然是作为任务来实现,但是不再调用xp_sqlmaint,任务执行的是SSIS包而已。每项任务都可以通过传递参数值和配置文件来进行定制,除了执行和登录选项之外,如下图所示:
屏幕截图5:定制任务
在该文中,我没有地方再来解释维护任务属性上面的每个标签了。你可以通过阅读SQL Server在线文档来学习更多。但是你可以了解,SSIS可以为定制维护计划任务提供更大的灵活性。
SQL Server 2005还允许你检查维护计划执行的历史,通过右击维护计划并选择“察看历史”来实现。在结果对话框内,你可以看到维护计划每个步骤的历史信息:
屏幕截图6: 查看维护计划的历史
在屏幕的底部,点击“察看T-SQL”,会显示给你任务实际上执行的Transact-SQL命令(或者一系列命令),如下图所示:
屏幕截图7: 查看 T-SQL 命令
小结
该文展示了SQL 2005中数据库维护计划的一些受欢迎的改善。在以前的软件版本中,维护计划运行得也相当的好,但是有一点点含糊和难以解决问题。新版本以 SSIS包的方式实现了维护计划,为定义维护计划任务、登录和配置选项的执行顺序提高了极大的灵活性。此外,维护计划任务不再需要通过若干个开关来调用一个神秘的扩展存储过程。相反,他们可以执行那些你可以查看的Transact-SQL命令,你会发现这样很舒服。最后但是绝对不是最不重要的,维护计划对于解决问题来说相当简单了,因为经过改善的用户界面可以让你查看它们的执行历史。