SQL Server 2000中的数据库维护计划元数据存储: msdb.dbo.sysdbmaintplan_databases  msdb.dbo.sysdbmaintplan_history  msdb.dbo.sysdbmaintplan_jobs  msdb.dbo.sysdbmaintplans



SQL Server 2000中数据库维护计划的执行: SQL Agent管理下的作业  调用xp_sqlmaint 外部工具sqlmaint.exe



SQL Server 2005下的维护计划: 通过SQL Server Integration Service设计-->在Management Studio中设计 在Development Studio中设计  通过作业调用SSIS包  一个维护计划仅生成一个作业



如何利用Management Studio创建维护计划和维护计划的调度及执行呢?



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库



展开SQL2005(本地计算机名称)--管理--对着维护计划右键--选择维护计划向导  接着下一步  注意: 配置SQL Server维护计划是有前提的 一定要确保SQL Server代理这一项服务要启用



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_02



名称就叫做MP Demo Wizard吧  接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_03



在选择维护任务里面把检查数据库完整性、重新生成索引、更新统计信息、清除历史记录、备份数据库(完整)沟上  接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_SQL_04



如果你想调整这些任务的顺序的话 你可以按上移或者下移来调整顺序  接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_维护计划_05



在数据库的以下数据库里面把AdventureWorks沟上  按确定  接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_SQL_06



在数据库的以下数据库里面把AdventureWorks沟上  按确定  在对象里面选择表  在选择里面选择全部  把将每页的可用空间百分比更改为50%  接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_07



在数据库的以下数据库里面把AdventureWorks沟上  按确定  在对象里面选择表  在选择里面选择全部  在更新里面选择所有现有统计信息  接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_维护计划_08



接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_09



在数据库的以下数据库里面把AdventureWorks沟上  按确定  在跨一个或多个文件备份数据库里面输入一个路径-->C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\bak  接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_维护计划_10



把将报告写入文本文件沟上  接着下一步



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_11



按完成



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_12



可以看到状态全部成功了  按关闭  展开管理--维护计划--可以看到一个叫做MP Demo Wizard的维护计划 这个维护任务是如何来执行的呢? 展开SQL Server 代理--作业--可以看到一个叫做MP Demo Wizard Subplan_1的作业来调用维护计划的



SQL SERVER2008 创建维护计划 sql2005维护计划_维护计划_13



维护计划是保存在什么地方呢?  在对象资源管理器里面按连接--在服务器类型里面选择Integration Services  在连接到服务器里面按连接  展开SQL2005(Integration Services...)--已存储的包--MSDB--Maintenance Plans--可以看到我刚才设计的MP Demo Wizard这个维护任务



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_14



展开SQL Server代理--作业--对着MP Demo Wizard Subplan_1右键--选择属性--按步骤--可以看到一个叫做Subplan_1的作业步骤  双击这个作业步骤来打开它



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_15



可以看到这个作业任务的类型就是SQL Server Integration Services包  其实它是通过SQL 代理服务账户来调用刚才生成的MP Demo Wizard这样的一个SSIS的包



SQL SERVER2008 创建维护计划 sql2005维护计划_SQL_16



除了通过向导去实现维护计划之外 我们还可以直接来新建维护计划  展开管理--对着维护计划右键--选择新建维护计划--名称就叫做MP Demo SSMS吧  按确定



SQL SERVER2008 创建维护计划 sql2005维护计划_SQL_17



这里我们还可以去设计完整的作业任务  把"检查数据库完整性"拖曳到里面--双击这个任务--在数据库的以下数据库里面把AdventureWorks沟上  按确定



SQL SERVER2008 创建维护计划 sql2005维护计划_维护计划_18



检查数据库完整性之后  比如说我还想去"重新生成索引"任务怎么办呢? 可以把"重新生成索引"任务拖曳到检查数据库完整性的下面  双击这个任务来打开它--在数据库里面选择AdventureWorks这个数据库--在对象里面选择表--在选择里面选择全部--把将每页的可用空间百分比更改为50%  按确定



SQL SERVER2008 创建维护计划 sql2005维护计划_SQL_19



把"更新统计信息"任务拖曳到"重新生成索引"任务的下面  在数据库里面选择AdventureWorks这个数据库 在对象里面选择表 在选择里面选择全部 在更新里面选择所有现有统计信息  按确定 



SQL SERVER2008 创建维护计划 sql2005维护计划_数据库_20



把"备份数据库"任务拖曳到"更新统计信息"任务的下面  双击这个任务来打开它--在备份类型里面选择完整--在数据库里面选择AdventureWorks这个数据库--在备份文件扩展名里面输入bak--把验证备份完整性沟上--按确定



SQL SERVER2008 创建维护计划 sql2005维护计划_SQL_21



这样的一个作业就完成了  我把它设置成在每周星期日的0:00:00执行。在上面按保存那个图标就ok了 



SQL SERVER2008 创建维护计划 sql2005维护计划_维护计划_22



按F5键来刷新一下  可以看到在维护计划里面多出一个叫做MP Demo SSMS的维护任务了  展开SQL Server代理--作业--可以看到多出了一个叫做MP Demo SSMS Subplan_1的作业了  展开SQL2005(Integration Services...)--已存储的包--MSDB--Maintenance Plans 可以看到多出一个叫做MP Demo SSMS的包了



SQL Server 2005维护计划支持的操作: 数据库备份 数据完整性检查 执行SQL Agent作业 执行T-SQL脚本 历史数据清理 维护计划数据清理 重建索引 重组索引 收缩数据库 更新统计



与维护计划相关的T-SQL语句(一)-->见下列表:
             维护计划                         T-SQL语句



            数据库备份                  BACKUP DATABASE  BACKUP LOG



          数据完整性检查                    DBCC CHECKDB



         执行SQL Agent作业               sp_start_job



           执行T-SQL脚本                   sp_executesql           
                                            execute



           历史数据清理                       sp_purgejob_history



                                                  sp_delete_backuphistory



                                                  sp_maintplan_delete_log



与维护计划相关的T-SQL语句(二)-->见下列表:



             维护计划                          T-SQL语句



         维护计划数据清理                    xp_delete_file



             重建索引                          ALTER INDEX index_name
                                               REBUILD WITH params
                                             DBCC DBREINDEX* 



             重组索引                          ALTER INDEX index_name
                                               REORGANIZE WITH params
                                             DBCC INDEXDREFREG*



            收缩数据库                        DBCC SHRINKDATABASE



             更新统计                         UPDATE STATISTICS 



维护计划的元数据存储和检索: 为兼容而保留的-->msdb.dbo.sysdbmaintplans  msdb.dbo.sysdbmaintplan_jobs  msdb.dbo.sysdbmaintplan_databases  msdb.dbo.sysdbmaintplan_history  msdb.dbo.sp_help_maintenance_plan
                            系统维护计划-->msdb.dbo.sysdtspackages90  msdb.dbo.sysmaintplan_subplans  msdb.dbo.sysmaintplan_log  msdb.dbo.sysmaintplan_logdetail



利用Development Studio设计维护计划: 维护计划完全基于Integration Service  维护计划生成SSIS Package  SQL Agent作业调用SSIS Package  利用Development Studio可在维护计划中加入其它复杂任务 



     特别注意: 不要通过删除SSIS Package的方式删除维护计划,否则会导致元数据残留在msdb.dbo.sysmaintplan_subplans系统表中。



SQL Server 2005中维护计划的优势: 可自定义维护作业的流程 可在维护作业中加入复杂的逻辑 更加便于导出和跨服务器复制 更加便于与数据维护及业务维护作业衔接