USE [AdventureWorks]
GO
DBCC SHRINKDATABASE(N'AdventureWorks', 15, TRUNCATEONLY)
GO
但是,如果您要创建维护计划,最好不要选择收缩数据库的选项。首先,数据库收缩操作总是反向进行的,即从文件末端开始释放空间,把分配页移动到文件起始端的未分配页。由于所有的转移操作都会被记录到日志中,所以这个过程会增加事务日志文件的大小。其次,如果数据库的使用频率很高就会产生插入碎片,数据库文件又会不断增加。SQL Server 2005启用即时文件初始化来解决数据库自动增长缓慢的问题,因此增长过程会比过去快。不过,有时候会出现自动增长需要的空间不足的情况,这将造成数据库性能衰退。最后,数据库收缩和增长过于频繁会产生很多文件碎片。如果您想要收缩数据库空间,最好在数据库运行非高峰时段手动进行。
3.3 重新组织索引任务
重新组织索引任务(Reorganize Index Task)可以整理索引碎片,并压缩与所有表和视图相关联的或者与特定表和视图关联的聚集和非聚集索引,以此来来改善索引扫描性能。受此任务影响的数据库可以是所有的数据库、所有系统数据库、所有用户数据库或单个目标数据库。任务设置了可以用来选择压缩图像或文本等大型对象(LOB)数据的额外选项。
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执行索引扫描和查找的时候,系统运行会非常顺畅。另外,此任务能够优化数据和可用空间的再索引页的分配,使数据库增长更加快速。
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 )
维护计划的特性本身就是SQL Server 2005产品的一个主要卖点。能够利用一个简单的配置向导来自动管理SQL Server针对单个或多个数据库的维护任务,大大减轻了数据库管理员手动操作的工作量,确保不会遗漏任何维护任务。同时也提供了手动创建维护任务的选择,采取这种方法可以在高级流程上获得更多的灵活性。
SQL Server 2005 Service Pack 2还具有扩张维护计划应用的组织能力,Service Pack 2提供的一些新特性包括支持多服务器维护计划、远程日志记录等。