第八章:SQL Server 2005维护实践

地空导弹

有什么新的维护与服务包2

在SQL Server Service Pack 2中,许多新的改进功能和修复已经支持了维护计划的创建经验。这些变化包括以下内容:

  • 维护计划设计器支持维护计划中的多个子计划,以及为每个子计划创建独立的时间表的功能。多个调度是一个备受期待的特性,可以利用它为备份、更新统计信息和执行SQL Server作业等项设置单独的调度。

  • 在SQL Server 2005启动时,如果组织希望运行维护计划,就需要安装SQL Server Integration Services (SSIS)。这种情况已经改变了。不再需要集成服务,因为维护计划现在是数据库引擎中完全支持的特性。

  • 为了增加管理,维护计划现在支持多服务器环境,并将维护计划信息记录到远程服务器。现在可以从一个中央主服务器为所有目标服务器配置维护计划。

  • 维护清除任务,它最早出现在SQL Server 2000中,已经重新出现在维护计划到每个DBA享用。回顾一下,这个任务会删除是维护计划执行的一部分任何剩余的文件。

SQL Server 2005 Service Pack 2的引入还带来了其他改进和增强。下面介绍了一些很多人都期望能改善特定任务的修复方法。

  • 随着SQL Server 2005 Service Pack 2的发布,数据库备份维护计划任务中添加了新的备份过期选项。可以指定备份过期选项,比如让备份集在特定日期之后或特定日期过期。该特性存在于SQL Server 2000中;但是,当SQL Server 2005发布时,它是不可用的。

  • 如果您选择一个特定的位置来存储备份文件夹,数据库备份维护计划任务不会重置此选项。

  • 过去,在使用备份数据库维护计划任务时,可以在使用简单恢复模型的系统数据库上创建差异和事务日志备份计划。这个错误已经被解决。

  • 历史记录清除维护计划任务书由小时选择的时间单位,最终减少手工作业的选项删除文件。

  • Update Statistics任务包括全扫描或样本大小选项,这在SQL Server 2000维护计划中是可用的。

建立SQL Server维护计划

维护计划执行一组按计划间隔运行的SQL Server作业。维护计划执行预定的SQL Server维护任务,以确保数据库引擎中的关系数据库执行最佳,执行定期备份,并检查异常情况。数据库维护计划(SQL Server数据库引擎中包含的一个特性)可用于自动创建和调度这些日常任务。一个全面的维护计划包括以下主要管理任务:

  • 运行数据库完整性检查

  • 更新数据库统计信息

  • 重组数据库索引

  • 执行数据库备份

  • 清理数据库的历史操作数据

  • 减少数据库

  • 清理维护计划中剩余的文件

  • 执行SQL服务器作业

  • 清理维护任务


注意 -与SQL Server 2000不同,日志传送不再是维护计划中包含的任务。日志传送可以在SQL Server Management Studio (SSMS)中的数据库级别配置,也可以通过Transact-SQL (TSQL)脚本配置。


检查数据库完整性任务

检查数据库完整性任务将验证在SQL Server数据库引擎选择的关系型数据库中用户和系统表的健康和结构完整性。当运行这个任务,你可以选择同时检查所有索引页的完整性。这种特殊的任务可以在维护计划向导,将手动创建维护任务创建。在另一方面,你可以使用T-SQL来创建此任务。当您创建数据库完整性任务,可用的数据库选项包括所有的系统数据库,所有用户数据库或特定数据库。

尽管下面是一个基本语法,但它提供了评估AdventureWorks数据库上数据库的运行状况和完整性所需的信息。

使用[AdventureWorks]去DBCC CHECKDB与NO_INFOMSGS去

收缩数据库任务

该收缩数据库任务减少了物理数据库和日志文件到一个特定的大小,类似自动收缩任务SSMS可用。当创建一个维护任务,还可以收缩单一任务中的所有数据库,所有的系统数据库,所有用户数据库或特定数据库。此操作将删除根据您输入的百分比值数据库中的多余空间。此外,在阈值MB可以输入,指示需要数据库达到一定的大小和自由空间的过量空间被移除之后必须保持的量之后发生的收缩量。最后,自由空间可以在数据库中保留或释放回操作系统。

这个TSQL语法缩小了AdventureWorks数据库,将释放的空间返回给操作系统,并允许在收缩之后保留15%的可用空间:

使用[AdventureWorks]去DBCC SHRINKDATABASE(N'AdventureWorks', 15, TRUNCATEONLY)去

提示- - - - - -当您创建维护计划,它不是选择收缩数据库选项的最佳实践。首先,收缩数据库时,SQL Server将移向文件的开始页面,允许文件的尾部进行收缩。这个过程可以增加事务日志的大小,因为所有的动作都会被记录。其次,如果数据库是大量使用,有许多刀片,数据库文件将再次增长。SQL Server 2005点中的地址与即时文件初始化自动增长缓慢;因此,成长过程是不一样慢,因为它是在过去。然而,有时自动增长不与空间需求赶上,导致性能下降。三,不断萎缩和数据库导致过度分散的增长。如果您需要收缩数据库的大小,应手动当服务器没有被大量利用来完成。


重新组织索引任务

当需要提高索引扫描性能时,请查看Reorganize index任务。此任务对所有表或视图或特定表或视图上的聚集和非聚集索引进行整理和压缩。reorganizationindex任务还可以应用于所有数据库、系统数据库、用户数据库或个别目标数据库。通过另外选择一个选项,大型对象(LOB)数据类型(比如图像或文本)也将包含在压缩过程中。

为了更好地了解这个任务的操作,使用下面的TSQL语法重新组织AdventureWorks [Sales]的索引。(SalesOrderDetail)表。这个例子还包含了压缩大对象的选项:

使用[AdventureWorks]在[Sales]上修改索引[AK_SalesOrderDetail_rowguid]。[SalesOrderDetail]用(LOB_COMPACTION = ON)重新组织GO 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 )

重建索引任务

重建索引任务的目的是通过重新组织数据库中的所有表索引来消除碎片。此任务特别适合于确保查询性能和应用程序响应不会降低。因此,当SQL被调用来执行索引扫描和查找时,它会尽其所能进行操作。此外,该任务优化了索引页上的数据和空闲空间的分布,从而允许更快地增长。

这两个重建索引空闲空间选项包括以下内容:

  • 与自由空间的默认数量重新组织页-删除数据库表上的索引,并使用创建索引时指定的填充因子重新创建它们。

  • 将每个页面的可用空间百分比更改为-删除数据库表上的索引,并使用新的自动计算的填充因子重新创建它们,从而在索引页上保留指定数量的空闲空间。百分比越高,索引页上保留的空闲空间就越多,索引增长的空间也就越大。有效值从0到100。

重建索引任务高级选项包括以下内容:

  • 在tempdb中排序结果在tempdb中的排序结果是重建索引任务中可用的第一个高级选项。这个选项与索引的SORT_IN_TEMPDB选项类似。当启用此选项时,在重新构建索引时,中间结果将存储在tempdb中。

  • 在重新索引时保持索引在线-The第二高级选项允许用户访问基础表,聚簇索引数据,并将该索引期间相关的索引重建操作。

了解了重建索引任务的功能之后,可以使用以下信息获得一些实际操作经验。使用下面的重建索引语法重建AdventureWorks [Sales]的索引。(SalesOrderDetail)表。已选择使用默认的可用空间量重新组织页面的选项。这个示例还将对tempdb中的结果进行排序,并在重新索引时保持索引在线。

使用[AdventureWorks中] GO ALTER INDEX [AK_SalesOrderDetail_rowguid](销售)。使用(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE =)重新构建ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,SORT_IN_TEMPDB = ON, IGNORE_DUP_KEY = OFF, ONLINE = ON)使用[AdventureWorks]去修改索引[IX_SalesOrderDetail_ProductID]ON [销售]。[的SalesOrderDetail] REBUILD WITH(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON,使用[AdventureWorks]访问ALTER索引[PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID]ON [销售]。[的SalesOrderDetail] REBUILD WITH(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON,SORT_IN_TEMPDB = ON, ONLINE = ON)

更新统计数据的任务

更新统计工作重新取样用户表上的每个索引的分布统计,确保在一个或多个SQL Server数据库中的表和索引的最新数据是。

有许多选择可用于定制此任务。下面将解释每个选项:

  • 数据库- 第一选择将这个任务会受到影响的数据库。该选择范围从所有数据库,系统数据库,数据库,用户数据库和这些数据库。

  • 目的-after数据库被选择,决定在对象框是否显示表和视图或仅其中的一个选项。

  • 选择-选择将受到影响的表或索引。如果在对象框中选择了表和视图选项,则此框将不可用。

  • 更新-The更新包提供三种选择。选择所有现有的统计数据,如果你需要更新列和索引。如果你只需要更新列统计信息,并选择索引统计,如果你只需要更新索引统计信息选择列统计信息。

  • 扫描类型-The扫描类型部分可让您根据全面扫描或输入样品按价值计算更新的统计数据。样品通过值可以是百分比或特定的行数。

更新AdventureWorks [Sales]统计信息的语法。[SalesOrderDetail]表的高级选项更新所有现有统计数据并进行全面扫描如下:

使用[AdventureWorks]去更新统计数据[销售]。与FULLSCAN [SalesOrderDetail]

历史清理任务

历史清理任务为组织提供了通过几个简单步骤删除历史数据的绝佳机会。您可以使用此任务删除几种类型的数据。下面解释了与此任务关联的选项。

  • 要删除的历史数据-使用维护计划向导清除几种类型的数据,包括备份和恢复历史、SQL Server代理作业历史和维护计划历史。

  • 删除历史数据- 使用向导还选择要删除的数据的年龄。例如,您可以选择定期删除基于每天,每周,每月和每年的增量较旧的数据。

当历史清理任务完成时,您可以将报表保存为文本文件,或者通过单击Next将报表通过电子邮件发送给操作员。将调用Select Report Options屏幕,您必须启用复选框将报表写入文本文件,然后通过指定文件和文件夹位置来确定报表的存储位置。

下面的TSQL示例删除四个星期的下列项目较旧的历史数据:备份和还原历史,SQL Server代理作业历史,维护计划的历史。

申报@dt日期时间选择@dt =铸(N'2006-12-28T09:26:24' 作为日期时间)EXEC msdb.dbo.sp_delete_backuphistory @dt GO EXEC msdb.dbo.sp_purge_jobhistory@oldest_date='2006-12-28T09:26:24'执行msdb..sp_maintplan_delete_log空,空,2006 - 12 - 28 - t09:26:24”
有关:
123. 第1页
第1页3
工资调查:结果在