热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » MySQL/MSSQL编程 » SQL Server 2005 数据维护实务

SQL Server 2005 数据维护实务

论坛链接
  • SQL Server 2005 数据维护实务
  • 发布时间:2007-11-27 13:50:17    浏览数:7071    发布者:superadmin    设置字体【   
 1.关于SQL Server 2005数据维护计划
  为了使SQL Server数据库的性能保持在最佳的状态,数据库管理员应该对每一个数据库进行定期的常规维护。这些常规任务包括重建数据库索引、检查数据库完整性,更新索引统计信息,数据库内部一致性检查和备份等。这些常规的数据库维护任务需要经常重复,而且繁琐耗时,所以往往被管理员忽略。而且,现在的数据库管理员一天到晚都被很多其他的任务压得喘不过气来,根本没有时间去进行日常维护工作。认识到这些问题的存在,SQL Server通过制定维护计划,提供了一个可以自动或手动执行这些日常维护事务的方法。当确定并创建了维护任务后,日常维护就会根据设定的时间段启动,最终会为企业提供更优质更稳定更值得信赖的数据库。

  2.SQL Server Service Pack 2数据维护方面的新特性

  SQL Server Service Pack 2有许多改进的新功能和修复设置已经能够支持维护计划的创建功能。其中改进的特性包括:

  维护计划设计器支持在一个维护计划里设置多个子计划,而且每个子计划可以具有创建独立任务计划书的功能。多重计划书是备受期待的特性,能够为不同的日常维护事务设置独立的计划表,例如备份、更新统计信息和执行SQL Server作业等。

  在SQL Server 2005推出的初期,如果企业想要运行维护计划,需要安装SQL Server集成服务(SQL Server Integration Services,SSIS)。不过现在维护计划已经作为一项完全支持的特性整合到了数据库引擎中,所以不再需要启动集成服务了。

  支持多服务器管理环境,并把维护计划信息记录到远程服务器,以适应不断增加的管理维护计划。可以从一台中央主服务器为所有的目标服务器设置维护计划。

  最早出现在SQL Server 2000备受欢迎的“清除维护任务”(Maintenance Cleanup Task)重新回到了维护计划里。这个任务可以删除维护计划执行以后任何残留下来的文件。

  下面列举几个人们预想不到的修复设置,用以改善相关的具体任务:

  SQL Server 2005 Service Pack 2为数据库备份维护计划任务增加了新的备份过期选项。如果您想让备份设置在某个特定日期之后失效,就可以通过设置备份过期选项来实现。SQL Server 2000具有这个特性,不过在SQL Server 2005发布之初被删除了。

  您可以另外指定备份文件夹的位置,数据库备份维护计划任务不会再重新设置这个选项为默认位置。

  过去当您运行备份数据库维护计划任务时,系统可能会错认为您要利用简单恢复模式为系统数据库创建差异和事务日志备份。现在这个缺陷已经修复了。

  历史清除维护计划任务能够将删除文件的时间选项设置成以小时为单位,大大减少了人工操作时间。

  更新统计信息任务提供原先在SQL Server 2000维护计划中包含的完全扫描或根据样本大小扫描的选项。

  3. SQL Server维护计划的任务

  一个维护计划可以在设定的时间段里运行全套的SQL Server维护任务,以确保数据库引擎里的关系数据库能够优化运行、执行日常备份和检查异常数据。作为SQL Server数据库引擎的一个特性,可以自动创建数据库维护计划并为这些日常维护设置计划书。一个全面的维护计划包括一下几个主要的任务:

  检查数据库完整性
  更新数据库统计信息
  重新组织数据库索引
  进行数据库备份
  清洗数据库历史操作数据
  收缩数据库
  清除维护计划残留文件
  执行SQL Server作业
  清除维护任务
  注意,和SQL Server 2000不同,日志传送不再包括在维护计划的范畴里。可以在SQL Server Management Studio的数据库水平上或者通过TSQL脚本设置日志传送任务。

  3.1 检查数据库完整性任务

  检查数据库完整性任务(Check Database Integrity Task)检验选定的关系数据库中用户和系统表的性能和结构完整性,同时也可以选择检查所有索引页的完整性,检查对象可以是所有的系统和用户数据库,也可以是单个指定数据库。通过维护计划向导(Maintenance Plan Wizard)或使用TSQL语句能够手动创建该任务。

  下面的语法虽然简单,但提供了在AdventureWorks数据库中创建检查数据库完整性任务所需要的所有信息。

  USE [AdventureWorks]
  GO
  DBCC CHECKDB WITH NO_INFOMSGS
  GO


  3.2收缩数据库任务

  收缩数据库任务可以把数据库的物理空间和日志文件所占的空间减小到特定值,类似于SSMS中使用的自动收缩任务(Automatic Shrink Task)。收缩对象可以是所有数据库、所有系统数据库、所有用户数据库或单个任务中指定的数据库。该任务会根据您输入的百分比值消除多余的空间。此外,还可以设定各种表示大小(MB)的阈值,包括当数据库大小达到某特定值时的收缩量以及收缩后必须保留的可用空间大小等。可用空间可以保留在数据库里,也可以释放到操作系统中。

  以下的TSQL语法可以用来收缩AdventureWorks 数据库,并把所释放的空间返回操作系统,且允许在收缩后保留15%的可用空间。

  USE [AdventureWorks]
  GO
  DBCC SHRINKDATABASE(N'AdventureWorks', 15, TRUNCATEONLY)
  GO


  但是,如果您要创建维护计划,最好不要选择收缩数据库的选项。首先,数据库收缩操作总是反向进行的,即从文件末端开始释放空间,把分配页移动到文件起始端的未分配页。由于所有的转移操作都会被记录到日志中,所以这个过程会增加事务日志文件的大小。其次,如果数据库的使用频率很高就会产生插入碎片,数据库文件又会不断增加。SQL Server 2005启用即时文件初始化来解决数据库自动增长缓慢的问题,因此增长过程会比过去快。不过,有时候会出现自动增长需要的空间不足的情况,这将造成数据库性能衰退。最后,数据库收缩和增长过于频繁会产生很多文件碎片。如果您想要收缩数据库空间,最好在数据库运行非高峰时段手动进行。

  3.3 重新组织索引任务

  重新组织索引任务(Reorganize Index Task)可以整理索引碎片,并压缩与所有表和视图相关联的或者与特定表和视图关联的聚集和非聚集索引,以此来来改善索引扫描性能。受此任务影响的数据库可以是所有的数据库、所有系统数据库、所有用户数据库或单个目标数据库。任务设置了可以用来选择压缩图像或文本等大型对象(LOB)数据的额外选项。

  为了更深入了解这个任务,下面举一个用来重新组织与AdventureWorks 数据库中的[Sales]. [SalesOrderDetail]表关联的索引的TSQL语法实例,本例中还包含了压缩大型对象数据的选项:

  USE [AdventureWorks]
  GO
  ALTER INDEX [IX_SalesOrderDetail_ProductID]
  ON [Sales].[SalesOrderDetail]
  REORGANIZE WITH ( LOB_COMPACTION = ON )
  GO
  USE [AdventureWorks]
  GO
  ALTER INDEX [PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID]
  ON [Sales].[SalesOrderDetail]
  REORGANIZE WITH ( LOB_COMPACTION = ON )


  3.4 重新生成索引任务

  重新生成索引任务(Rebuild Index Task)旨在通过重新组织数据库中所有的表索引而清除碎片。此任务对于确保查询性能和应用程序响应不会退化非常有用。因此,当需要对SQL执行索引扫描和查找的时候,系统运行会非常顺畅。另外,此任务能够优化数据和可用空间的再索引页的分配,使数据库增长更加快速。

  对于可用空间,重新生成索引任务包含以下两个选项:

  采用默认可用空间大小来重新组织索引页——删除数据库里的表索引,并重新生成索引,生成索引的同时就指定填充因子(fill factor)的值。

  改变每个索引页的可用空间比例——删除数据库里的表索引,并指定一个自动计算得到的新填充因子值来重新生成索引,因此能够保留索引页上指定的有用空间大小。填充因子的有效值范围从0到100,数值越大,索引页上保留的有用空间就越多,索引就可以增长得越大。

  重新生成索引的高级选项包括:

  指定是否在tempdb中存储排序结果——这是重新生成索引的第一个高级选项,相当于索引中的SORT_IN_TEMPDB选项,如果激活这个选项,那么中间排序结果将会在重新生成索引的过程中存储到tempdb中。

  指定重新生成索引操作中是否保持索引联机——如果设置值为ON,那么这个选项允许用户在重新生成索引操作过程中对基础表、聚集索引数据和相关联的索引进行查询和数据修改操作。

  为了更深入了解这个任务,下面举一个TSQL语法实例用来重新生成与AdventureWorks 数据库中的[Sales]. [SalesOrderDetail]表关联的索引,例子中采用默认可用空间大小选项,同时将排序结果存储在tempdb中,并在操作过程中保持索引联机:

  USE [AdventureWorks]
  GO
  ALTER INDEX [AK_SalesOrderDetail_rowguid]
  ON [Sales].[SalesOrderDetail]
  REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, IGNORE_DUP_KEY = OFF, ONLINE = ON )
  GO
  USE [AdventureWorks]
  GO
  ALTER INDEX [IX_SalesOrderDetail_ProductID]
  ON [Sales].[SalesOrderDetail]
  REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, ONLINE = ON )
  GO
  USE [AdventureWorks]
  GO
  ALTER INDEX [PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID]
  ON [Sales].[SalesOrderDetail]
  REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, ONLINE = ON )


  3.5 更新统计信息任务

  更新统计信息任务(pdate Statistics Task)通过对用户表创建的每个索引统计信息分布进行重新抽样,以确保在一个或多个SQL Server数据库内表和索引中的数据都是最新的。

  此任务的选项有很多,下面为您一一介绍:

  数据库——首先选择受此任务影响的数据库。这个选项范围包括所有数据库、所有系统数据库、所有用户数据库或指定数据库。

  对象——选择完数据库后,就该在对象框中选择限定显示表、显示视图还是两者同时显示。

  选择——选择受此任务影响的表或索引。如果在对象框中选择了同时显示表和视图选项的话,此选项不可用。

  更新——“更新”框提供了三个选项。如果需要更新列和索引的统计信息那就选择全部现有统计信息,如果只需要更新列统计信息那就选择仅限列统计信息,如果只更新索引统计信息那就选择仅限索引统计信息。

  扫描类型——此选项使用户可以对收集已更新统计信息进行完全扫描或通过在抽样选项键入特定值进行扫描。抽样选项的值可以是要抽样的表或索引视图的百分比,也可以是指定的行数。

  下面是用来更新AdventureWorks 数据库中的[Sales]. [SalesOrderDetail]表的索引统计信息的TSQL语法,例子中选择更新全部现有信息,并执行完全扫描:

  use [AdventureWorks]
  GO
  UPDATE STATISTICS [Sales].[SalesOrderDetail]
  WITH FULLSCAN


  3.6 清除历史记录任务

  清除历史记录任务(History Cleanup Task)用几个简单的步骤就可以完全清除数据库表中旧的历史信息。任务支持删除多种类型的数据。下面介绍与此任务相关的几个选项:

  即将删除的历史数据——使用维护计划向导来清除备份和还原历史记录,SQL Server代理作业历史记录和维护计划历史记录。
       移除历史数据,如果其保留时间超过——同样是通过维护计划向导实现,用于指定需要删除的数据所保留的最早日期。例如您可以选择以天数、周数、月数或年数为单位作为间隔周期来删除旧数据,系统将自动将该间隔单位转换为日期。

  当清除历史记录任务完成后,点击“下一步”,调用“选择报告选项”界面,激活检查框中的将报告写入文本文档选项,然后选择保存路径就可以选择将结果报告保存到一个文本文档或用电子邮件发送这份报告给操作人员。

  下面的TSQL实例显示如何清除保留了超过四星期的备份和还原历史、SQL Server代理作业历史以及维护计划历史等数据:

  declare @dt datetime select @dt = cast(N'2007-10-21T09:26:24' as datetime)
  exec msdb.dbo.sp_delete_backuphistory @dt
  GO
  EXEC msdb.dbo.sp_purge_jobhistory @oldest_date='2007-10-21T09:26:24'
  GO
  EXECUTE msdb..sp_maintplan_delete_log null, null,'2007-10-21T09:26:24'


  3.7 执行SQL Server代理作业任务

  执行SQL Server代理作业任务(Execute SQL Server Agent Job task)可以让您把运行已有的SQL Server代理作业和SSIS程序包作为维护计划的一部分。通过在“定义执行SQL Server代理作业任务”界面的可用SQL Server代理作业选项卡选择完成这项任务。同样,也可以通过TSQL语法来通过输入与已有的作业相应的作业ID来执行这项任务。

  执行此任务的语法如下:

  EXEC msdb.dbo.sp_start_job @job_id=N'35eca119-28a6-4a29-994b-0680ce73f1f3'

  3.8 备份数据库任务

  备份数据库任务(Back Up Database Task)是自动和按计划执行完全备份、差异备份和事务日志备份的最佳途径。

  当在备份计划中创建以上备份任务时,会有一个包含多个选项的扩张选项集。通过设置这些扩张选项,您可以选择备份一个数据库或单个的组件,设置备份过期时间,验证备份完整性,设置还可以选择是否使用硬盘或磁带备份。下面将对这些备份选项进行详细介绍:

  指定备份数据库——指定受此任务影响的数据库,下拉菜单提供以下选项:所有数据库、所有系统数据库、所有用户数据库和以下数据库。

  备份组件——提供备份整个数据库和指定文件和文件组选项。

  备份集过期时间——只需要输入特定的天数或者输入某个具体日期(如2007年12月30日),即可指定备份集过期并可被其他备份集覆盖的时间,。

  备份到——此选项可用于指定将数据库备份到一个文件或磁带,只有系统中存在磁带设备时才可以将数据库备份到磁带,否则可选择备份到网络共享的文件中。

  跨单个或多个文件备份数据库——单击添加可打开选择备份目标对话框,选择添加或去除一个或多个磁盘或磁带路径。此外,您可以查看文件内容,如果备份文件已存在,可选择追加把备份添加到已存在的备份文件当中。

  为每个数据库创建备份文件——可以跳过上述的跨单个或多个文件备份数据库选项,选择让SQL Sever自动为每个已选择的数据库创建备份文件。此外,还可以为每个已选择数据库创建一个子目录。注意,如果选择自动创建子目录选项,此子目录将会沿袭上级目录的权限。应当限制相关的NTFS权限,以保护根目录防止未经授权访问。

  验证备份完整性——当备份操作执行完毕,可使用TSQL语句检查备份是否成功,以及所有卷是否都可读。

  当您创建维护计划时,可以通过以下三个途径中的任意一个来备份数据库。当需要获得整个数据库时,选择指定备份数据库选项卡中的完全备份;如果只需要记录自最近一次完全备份以来所改变的数据,请选择差异备份;如果只想要备份日志中的访问记录时,请选择事务日志备份。执行完全备份和差异备份任务的备份文件扩展名为.bak,而事务日志备份的为.trn。除了这些不同之处以外,每个途径的选项都相同。

  很明显,数据库管理员会经常使用维护计划来备份数据库以及事务日志。但是,如果使用已经设置好日志传送的备份计划来备份事务日志时,在还原过程中会出现问题。最终,会创建出两个事务日志备份集,一个来自备份任务,另一个来自日志传送任务。因此,如果需要执行还原操作,必须两个备份集都有,否则不能把数据库备份到故障点。如果基于日志传送的事务日志备份已经存在,最好不要再通过备份计划另外创建事务日志备份任务。这样不会造成混乱,并不会把恢复计划搞砸而导致数据丢失。

  3.9 清除维护任务

  清除维护任务(Maintenance Cleanup Task)用以删除维护计划执行完毕后驻留再数据库中与维护计划相关的文件,包括备份计划文件和文本报告。此任务的选项详细介绍如下:

  删除以下类型文件——可以选择删除数据库备份文件或以前运行维护计划的文本报告。

  文件路径——通过文件名对话框可以选择删除指定的文件。

  搜索文件夹并根据扩展名删除文件——此选项可同时删除某特定文件夹中具有相同指定扩展名(如.txt)的多个文件。还可以选择删除指定文件夹中的所有一级子文件夹。

  文件保留时间——指定删除保留时间超过指定时间长度的文件。指定时间长度单位可以是小时、天、周、月和年。

  4. 创建维护计划

  您可以通过多个方法创建维护计划,如使用SSMS的数据库维护计划向导,或利用相关的维护计划任务工具框手动创建维护计划。下面将为大家详细介绍如何能够简单而直接地使用向导和手动来创建维护计划。

  4.1 利用数据库维护计划向导来创建维护计划

  数据库维护工作是所有数据库管理员的重要任务。要得到一个运行良好的系统就必须根据各自企业的需要利用维护计划来自动执行管理任务。下面将为大家介绍如何利用维护计划向导来为所有系统和用户数据库创建一个自定义的维护计划。

  在我们将要看到的例子中,包括了以下维护任务:检查数据库完整性、重新组织索引、重新生成索引、更新统计信息和清除历史记录。在产品环境中,是不能够在同一个维护计划里同时包含重新组织索引和重新生成索引这两个任务的。这两个任务会被认为是重复的。这里只是为了更好的解释创建设置而把两者都包括了。

  选择开始→所有程序→Microsoft SQL Server 2005→SQL Server Management Studio。
  在对象资源管理器中,首先选择连接到数据库引擎,展开目标服务器,再打开Management文件夹→Management Plans文件夹。
  右击Maintenance Plans,然后选择维护计划向导。
  阅读欢迎进入数据库维护计划向导界面的信息,然后点击下一步。
  在计划属性设置界面,输入维护计划的名称和描述语句。
  可以选择第一个选项(为每个任务创建独立计划书)或者第二个选项(为整体计划创建单一的计划书或无计划书。本例中选择第一个选项,然后点击下一步(见图1)。注意,只有Service Pack 2支持在单个维护计划中为每个子计划创建独立的计划书



图一

  7.  在选择维护任务界面(见图2),在下列维护任务前的方框中勾选该任务:检查数据库完整性、重新组织索引、重新生成索引、更新统计信息和清除历史记录。然后点击下一步。



图2

  8.  在选择维护任务执行顺序界面,指定任务的执行顺序,然后点击下一步。注意,包括重新组织和重新生成索引以及更新统计信息在内的很多维护任务执行的时候会改变数据库的内容。鉴于这种情况,在指定维护任务之间的优先链接时,最好把完全备份数据库任务指定为第一个执行的任务。这样确保如果上述维护计划任务失败时能够回滚数据库。

  9.  本例中选择的第一个任务是检查数据库完整性。在指定检查数据库完整性任务界面,从下拉菜单选择所有数据库选项,然后接受默认设置,即勾选包含索引选项框(这可以确保运行任务时会对所有索引页和表数据库进行完整性检查)。点击右下方的更改按钮,设置此任务运行时间为每周的非高峰时段,如星期天的午夜。接着点击下一步继续创建别的任务(见图3)。

2007-11-26/764d662d1779544271cc84d3f2b601f1.jpg

图3

  10.  第二个维护任务是重新组织索引。在指定重新组织索引任务界面的下拉菜单中选择所有数据库选项。勾选压缩大型对象选项框。点击更改按钮,设置每周运行一次此任务,然后点击下一步继续(见图4)。



图4

  11.  第三个维护任务是重新生成索引。还是在任务界面的下拉菜单中选择所有数据库选项,然后设置运行频率为每周一次。把可用空间选项卡设置为更具默认可用空间大小重新组织页面。在高级选项卡中勾选把排序结果存储在tempdb中和在重新生成索引时保持索引联机这两个选项(见图5)。点击下一步继续。
      

图5

  12.  第四个是更新统计信息任务。同样在任务界面下拉菜单中选择所有数据库选项。勾选更新所有已有统计信息选项框。扫描类型设置为完全扫描。设置运行频率为每周一次。点击下一步继续(见图6)。



图6

  13.  最后一个任务为清除历史记录。在任务界面的即将删除的历史数据选项卡勾选所有的三个选项,包括备份和还原历史、SQL Server代理作业历史和维护计划历史。在下一个设置选项根据企业的数据保留需求,指定需要删除的数据所保留的最早日期,设置任务运行频率为每周一次,点击下一步(见图7)。



图7



  14.  在生成报告选项界面,设置是否将维护任务报告写入文本文件,或存入指定的文件夹,还是通过电子邮件发送给操作员。如果选择将报告通过电子邮件发送给操作员,那么必须启用数据库邮件并进行适当配置(在代理操作中存在有效的电子邮件地址),此选项才可用。点击下一步继续。

  15.  这时会出现对所有维护计划任务进行总结的完成向导界面。在这个界面,可以下钻到任意一个已选任务查看其高级设置。查看完所有的选项,保证无误后,点击完成按钮,退出此总结界面。

  16.  进入维护计划向导进程界面,检查所有的创建状态,确认可用后,点击关闭按钮退出维护计划向导(见图8)。



图8

  4.2 手动创建维护计划

  在维护计划(设计选项卡)的帮助下还可以手动创建维护计划。与维护计划向导相比,维护计划设计选项卡利用了工作流设置,装备了更高级的工具和功能,所以它创建的维护计划更加灵活。

  手动创建维护计划的技能随着Service Pack 2的推出而得到了强化。在Service Pack 2中,手动创建维护计划时,维护计划历史可以在远程服务器上进行日志记录。当在一个基础架构内管理多个SQL Servers时,这个功能显得尤为重要,因为您可以把所有数据的日志集中到一台服务器上,方便了集中管理。

  选中Maintenance Plans文件夹,右击鼠标,选择新建维护计划选项,就会出现维护计划设计器的界面(见图9)。



图9

  在维护计划设计界面的左侧面板上显示了所有维护任务的工具箱。将选中的维护任务拖至中间的计划设计器界面。如果想将多个任务拖到设计器中,可以在两个任务对象之间创建一个工作流进程,以便建立任务之间的链接。工作流进程可以包含优先链接。这样第二个任务的执行依赖于第一个任务中指定的约束条件,例如“成功、失败或完成”举个例子,可以创建这样一个工作流:首先执行数据库的备份任务,然后只要第一个任务完成了,就执行第二个重新生成索引的任务(见图10)。两个对象之间的优先约束链接功能可以控制工作流在第一个备份任务成功后指示执行第二个重新生成索引任务。如果备份任务失败,那么第二个任务也不能够执行。



图10

  要创建优先约束链接,首先点击高亮设计器中选定的两个维护任务,右击鼠标,选择添加优先约束。链接建立后,双击或右击该链接箭头,选择编辑,启动优先约束编辑器,设置优先约束的各个选项(见图11)。



图11

  除了创建优先链接外,还可以指定任务同时执行,这就是任务并行,可以指定多项任务在牵制任务成功执行完后同时开始执行。当在不同的SQL Server上执行相同类型的维护任务时,通常会用到这个设置。

  最后需要提到的是报告功能。在维护计划执行完毕之后,可以创建一份关于维护计划活动报告。点击维护计划设计器中的报告和记录图标,弹出的报告和记录对话框,提供了包括生成文本文件报告和发送报告至电子邮件收件人等诸多选项(见图12)。此外,还提供了额外的日志功能,例如记录扩展信息和在远程服务器上进行日志记录。



图12

  通过可以使用查看T-SQL命令按钮,还可以把您对维护计划的所做设置选项转换为任务实际执行的TSQL语法。这对很多没有太多编程基础的数据库管理员来说是个非常有用的工具。
      4.3 查看维护计划

  所有的维护计划都可以在SSMS的维护计划文件夹下查看,而且能够作为代理作业存储在SQL Server中。此操作需要运行SQL Server代理,在计划间隔期启用作业。如果SQL Server代理停止运行,作业不会启动。另外,为了维护计划的持续,所有的作业都可以编辑和修改。

  在SQL Server管理器中按照以下步骤操作,就可以查看维护计划作业。
  选择开始→所有程序→Microsoft SQL Server 2005→SQL Server管理器。
  在对象资源管理器中,首先选择连接到数据库引擎,展开目标服务器,再展开Management文件夹→作业文件夹。点击作业文件夹,可以看到由维护计划向导创建的作业列表。在右侧版面的对象资源管理详情选项卡以及对象资源管理器中的作业文件夹下都显示了列表上的作业信息。
  如果SQL Server代理不在运行状态,就会出现一个对话框,提示目标服务器的SQL Server代理没有运行。通过以下步骤可以启动SQL Server代理:

  选择开始→所有程序→Microsoft SQL Server 2005→SQL Server管理器。
  在对象资源管理器中,首先选择连接到数据库引擎,再展开目标服务器。
  右击SQL Server代理,然后点击开始。
  4.4 创建多服务器维护计划

  在过去,数据库管理员在管理超过一个维护计划时会遇到很多困难,其中在一个多服务器环境下创建维护计划的任务尤其繁重,因为必须要为每一个服务器分别创建一个维护计划。而且,验证成功、失败和作业历史的工作相当费时费力;由于没有一个可以统筹管理这些计划的方法,管理员必须逐个验证。一个典型的全球性企业在它的基础架构里很可能有上百台SQL服务器,可想而知,这些数据库管理员生活在怎样的水深火热之中;因此,数据库管理员过劳却又缺乏运行效率都会随之而来。

  SQL Server 2005 Service Pack 2的推出让这些问题得到了缓解,源于它对多服务器维护计划的支持。也就是说,管理员可以从一个中央主服务器为每一个SQL服务器创建维护计划,显著提高了操作和管理效率。

  要想充分利用这个Service Pack 2提供的新特性来减轻您的负担,在创建多服务器维护计划之前,首先必须在多服务器环境中构建一台主服务器和一台或多台目标服务器。必须指出,目标服务器只能用来查看维护计划。因此,必须在主服务器上创建和管理多服务器维护计划,以便为您的众多服务器提供定期维护。另外,创建和管理多服务器维护计划的管理员必须是每台SQL Server的sysadmin固定服务器角色成员。可以用维护计划向导或手动创建此计划。

  4.5 构建SQL Server维护进度表

  随着每个新版本的发布,SQL Server的自我维护功能也越来越强大。但是,就算自我维护功能再强大,自动维护计划再方便易行,数据库管理员还是要执行一些额外的维护。有些维护操作必须要每天进行,而另外一些则可能只需要隔一年检查一次,维护任务的执行强度很大程度取决于企业自身的环境。

  下面会根据执行强度对维护任务及其相应的程序进行分类描述,适合于大多数具有不同IT基础架构的大中小型企业。执行强度用不同的时间间隔定义,包括每天、每周、每月和每季度,能够帮助企业建立起良好的维护实务,确保SQL Server数据库性能和安全。

  4.5.1 每天的例行维护任务

  需要数据库管理员密切关注的维护任务,最好每天都检查一下,这样可以确保系统的可靠性、可用性、运行性能和安全。每天的例行维护任务包括:

  检查是不是所有被请求的SQL Server服务都正常运行。
  检查日常备份日志中成功、警告或者失败记录。
  检查Windows事件日志有没有错误记录。
  检查SQL Server日志有没有安全警告记录,例如非法登录。
  执行完全备份或差异备份。
  在设置了完全恢复模型或大容量日恢复模型的数据库上执行事务日志备份任务。
  核实SQL Server作业没有失败。
  检查所有的数据库文件和事务日志具有合适的磁盘空间大小。
  至少要监控处理器、内存或者磁盘计数器没有出现瓶颈。
  4.5.2 每周的例行维护任务

  关注程度稍逊于每天的例行维护任务,最好每周进行一次例行检查。每周的例行维护任务包括:
  执行完全备份或差异备份。
  检查以前执行的维护计划报告。
  检查数据库完整性。
  如果需要,执行收缩数据库任务。
  通过重新组织索引任务压缩聚集和非聚集表和视图。
  通过重新生成索引任务在数据页和索引页重新组织数据。
  更新所有用户表和系统表的统计信息
  清除备份、还原、SQL Server代理作业和维护计划等操作的历史数据。
  如果需要,手动增长数据库或事务日志文件
  清除执行维护计划残留下来的文件。
  4.5.3 每月或每季度的维护任务

  有一些维护计划不需要执行得过于频繁,可以每个月或每个季度执行一次。但是请不要以为这些任务不需要天天执行就无足轻重,这些任务可以确保数据库环境的健康,所以不要轻视以下这些维护任务:

  在测试环境中执行备份还原操作。
  将历史数据归档。
  分析收集的性能统计数据,与基准值相比较。
  检查并更新维护文档。
  检查并安装最新的SQL Server补丁和补丁包。
  如果运行簇、数据库镜像或日志传送,则监测故障转移。
  验证备份和还原进程是否遵循已定义的服务等级协议。
  更新SQL Server构建指南。
  更新SQL Server灾难恢复文档。
  更新维护计划列表
  修改管理员口令。
  修改SQL Server服务帐户口令。
  总结

  维护计划的特性本身就是SQL Server 2005产品的一个主要卖点。能够利用一个简单的配置向导来自动管理SQL Server针对单个或多个数据库的维护任务,大大减轻了数据库管理员手动操作的工作量,确保不会遗漏任何维护任务。同时也提供了手动创建维护任务的选择,采取这种方法可以在高级流程上获得更多的灵活性。

  SQL Server 2005 Service Pack 2还具有扩张维护计划应用的组织能力,Service Pack 2提供的一些新特性包括支持多服务器维护计划、远程日志记录等。

  最后,本文最重要的目的就是要让大家明白,为您的SQL Server尽早制定维护计划,保证维护任务有计划地执行以保护每一个数据库的安全和性能。

  最佳实务

  以下总结了本文所强调的最佳实务要点:

  数据库管理员必须充分了解SQL Server环境下所有必许实施的维护计划。
  利用维护计划向导自动和有计划地制定日常维护操作。
  使用向导创建维护计划时,充分利用SQL Server Service Pack 2所提供的新特性,并为每个子任务制定独立的计划。
  脚本化、自动化您的维护任务,并全部记录在案。
  维护任务应当在运行非高峰时间段或高峰时间段后几小时进行,例如周末或午夜以后。
  当设置维护任务的执行顺序时,应当首先执行备份任务,然后在执行其他会改变数据库的任务。
  当创建维护计划时,不要把收缩数据库任务包括在内。如果需要,最好在非高峰时间段手动收缩数据库。
  M维护任务应当按照不同的时间段分类执行,例如每日、每周、每月。日常维护也是一样的。
  对于在大型企业环境运行多台SQL Server的情况下,充分利用子计划和多服务器维护计划。
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理