常见的SQL Server维护任务: 数据备份 数据完整性检查 数据整理 历史数据清理 执行作业 执行T-SQL脚本
回顾SQL Server 2000中的数据库维护计划: 可配置日志传送 重组数据和索引页 更新统计数据 收缩数据库 检查数据库完整性 备份数据库 生成报表
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创建维护计划和维护计划的调度及执行呢?
展开SQL2005(本地计算机名称)--管理--对着维护计划右键--选择维护计划向导 接着下一步 注意: 配置SQL Server维护计划是有前提的 一定要确保SQL Server代理这一项服务要启用
名称就叫做MP Demo Wizard吧 接着下一步
在选择维护任务里面把检查数据库完整性、重新生成索引、更新统计信息、清除历史记录、备份数据库(完整)沟上 接着下一步
如果你想调整这些任务的顺序的话 你可以按上移或者下移来调整顺序 接着下一步
在数据库的以下数据库里面把AdventureWorks沟上 按确定 接着下一步
在数据库的以下数据库里面把AdventureWorks沟上 按确定 在对象里面选择表 在选择里面选择全部 把将每页的可用空间百分比更改为50% 接着下一步
在数据库的以下数据库里面把AdventureWorks沟上 按确定 在对象里面选择表 在选择里面选择全部 在更新里面选择所有现有统计信息 接着下一步
接着下一步
在数据库的以下数据库里面把AdventureWorks沟上 按确定 在跨一个或多个文件备份数据库里面输入一个路径-->C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\bak 接着下一步
把将报告写入文本文件沟上 接着下一步
按完成
可以看到状态全部成功了 按关闭 展开管理--维护计划--可以看到一个叫做MP Demo Wizard的维护计划 这个维护任务是如何来执行的呢? 展开SQL Server 代理--作业--可以看到一个叫做MP Demo Wizard Subplan_1的作业来调用维护计划的
维护计划是保存在什么地方呢? 在对象资源管理器里面按连接--在服务器类型里面选择Integration Services 在连接到服务器里面按连接 展开SQL2005(Integration Services...)--已存储的包--MSDB--Maintenance Plans--可以看到我刚才设计的MP Demo Wizard这个维护任务
展开SQL Server代理--作业--对着MP Demo Wizard Subplan_1右键--选择属性--按步骤--可以看到一个叫做Subplan_1的作业步骤 双击这个作业步骤来打开它
可以看到这个作业任务的类型就是SQL Server Integration Services包 其实它是通过SQL 代理服务账户来调用刚才生成的MP Demo Wizard这样的一个SSIS的包
除了通过向导去实现维护计划之外 我们还可以直接来新建维护计划 展开管理--对着维护计划右键--选择新建维护计划--名称就叫做MP Demo SSMS吧 按确定
这里我们还可以去设计完整的作业任务 把"检查数据库完整性"拖曳到里面--双击这个任务--在数据库的以下数据库里面把AdventureWorks沟上 按确定
检查数据库完整性之后 比如说我还想去"重新生成索引"任务怎么办呢? 可以把"重新生成索引"任务拖曳到检查数据库完整性的下面 双击这个任务来打开它--在数据库里面选择AdventureWorks这个数据库--在对象里面选择表--在选择里面选择全部--把将每页的可用空间百分比更改为50% 按确定
把"更新统计信息"任务拖曳到"重新生成索引"任务的下面 在数据库里面选择AdventureWorks这个数据库 在对象里面选择表 在选择里面选择全部 在更新里面选择所有现有统计信息 按确定
把"备份数据库"任务拖曳到"更新统计信息"任务的下面 双击这个任务来打开它--在备份类型里面选择完整--在数据库里面选择AdventureWorks这个数据库--在备份文件扩展名里面输入bak--把验证备份完整性沟上--按确定
这样的一个作业就完成了 我把它设置成在每周星期日的0:00:00执行。在上面按保存那个图标就ok了
按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中维护计划的优势: 可自定义维护作业的流程 可在维护作业中加入复杂的逻辑 更加便于导出和跨服务器复制 更加便于与数据维护及业务维护作业衔接