被定期自动执行的维护计划:
- 用新的填充(占空)因子重建索引以重组数据和索引页上的数据。这确保数据库页包含相等分布的数据和剩余空间 ,这允许未来更快速成长。
- 从数据库页中移出空数据页压缩数据文件。
- 更新索引统计以确保查询优化有表分布数据值得最新信息。这允许查询优化作出访问数据的最优途径的更好的判断,因为它有关于数据存储在数据库中的更多信息。虽然索引统计被 sql server 周期更新的,这个选项强制统计立即更新。
- 执行数据库上的数据和数据页内部一致性检查以确保系统或软件问题不会损坏数据
- 备份数据库和事物日志。数据库和日期备份可以保持一个指定的周期,这允许你创建用在你需要恢复数据库一个比最后一个备份早的事件备份历史
- 设置日志传输。日志传输允许事物日志从一个数据库(源)不变地反馈到另一个数据库(目的)。保持目的数据库和原数据库的同步使你有一个备用数据库而且也提供一个从主数据库到只读目的服务器卸下查询处理的方法
1、 ** sp_add_maintenance_plan **
增加一个维护计划并返回计划 ID
语法: sp_add_maintenance_plan [ @plan_name = ] 'plan_name' ,
@plan_id = 'plan_id' OUTPUT
返回值: 0 成功 1 失败
备注: sp_add_maintenance_plan 必须在 msdb 上执行,它创建一个新的空维护计划。增加一个或多个数据库与一个或多个 job 交互执行 sp_add_maintenance_plan_db 和 sp_add_maintenance_plan_job.
只有 sysadmin 固定服务器角色成员可执行 sp_add_maintenance_plan
1、 ** sp_add_maintenance_plan_db **
将数据库加到维护计划中
语法: sp_add_maintenance_plan_db [ @plan_id = ] 'plan_id' ,
[ @db_name = ] 'database_name'
返回值: 0 成功 1 失败
备注: sp_add_maintenance_plan_db 必须在 msdb 上执行,只有 sysadmin 固定服务器角色成员可执行 sp_add_maintenance_plan_db
2、 sp_add_maintenance_plan_job
将维护计划中加到一个存在的 job 中
语法: sp_add_maintenance_plan_job [ @plan_id = ] 'plan_id', [ @job_id = ] 'job_id'
返回值: 0 成功 1 失败
备注: sp_add_maintenance_plan_job 必须在 msdb 上执行,只有 sysadmin 固定服务器角色成员可执行 sp_add_maintenance_plan_db
3、 sp_delete_maintenance_plan
删除指定维护计划
语法: sp_delete_maintenance_plan [ @plan_id = ] 'plan_id'
返回值: 0 成功 1 失败
备注: sp_delete_maintenance_plan 必须在 msdb 上执行,只有 sysadmin 固定服务器角色成员可执行 sp_add_maintenance_plan_db
4、 sp_delete_maintenance_plan_db
从维护计划中取消指定数据库
语法: sp_delete_maintenance_plan_db [ @plan_id = ] ' plan_id ' ,
[ @db_name = ] ' database_name '
返回值: 0 成功 1 失败
备注: sp_delete_maintenance_plan_db 必须在 msdb 上执行,只有 sysadmin 固定服务器角色成员可执行 sp_delete_maintenance_plan_db 。当最后一个数据库从维护计划中删除则维护计划也被删除。
5、 sp_delete_maintenance_plan_job
从指定 job 中取消(删除)维护计划
语法: sp_delete_maintenance_plan_job [ @plan_id = ] ' plan_id ' ,
[ @job_id = ] ' job_id '
返回值: 0 成功 1 失败
备注: sp_delete_maintenance_plan_job 必须在 msdb 上执行,只有 sysadmin 固定服务器角色成员可执行 sp_delete_maintenance_plan_job 。当最后一个数据库从维护计划中删除则维护计划也被删除。当所有 jobs 被从维护计划中删除推荐用户执行 sp_delete_maintenance_plan_db 从维护计划中移出剩余的数据库
6、 sp_help_maintenance_plan
返回指定维护计划的信息,如果未指定计划则返回所有的维护计划信息
语法: sp_help_maintenance_plan [ [ @plan_id = ] ' plan_id ' ]
如果指定计划则返回三张表 : Plan, Database, Job.
Plan
列名
|
数据类型
|
描述
---|---|---
plan_id
|
uniqueidentifier
|
维护计划 ID
plan_name
|
sysname
|
维护计划名 .
date_created
|
datetime
|
计划创建日期 .
owner
|
sysname
|
计划拥有者
max_history_rows
|
int
|
计划在系统表中记录历史的最大分配行数
remote_history_server
|
int
|
写历史报告的远程服务器名
max_remote_history_rows
|
int
|
写历史报告的远程服务器在系统表中最大分配行数 .
user_defined_1
|
int
|
缺省为 NULL.
user_defined_2
|
nvarchar(100)
|
缺省为 NULL.
user_defined_3
|
datetime
|
缺省为 NULL.
user_defined_4
|
uniqueidentifier
|
缺省为 NULL.
Database
列名
|
描述
---|---
database_name
|
维护计划中的所有数据库名 _ database_name _ is sysname .
Job
列名
|
描述
---|---
hui
|
维护计划中的所有 job ID. job_id is uniqueidentifier .
如果未指定计划则返回所有计划信息 .
7、 sysdbmaintplan_databases
一个相关维护计划中的每个数据库包含一行,本表保存在 ** msdb ** 中。
列名
|
数据类型
|
描述
---|---|---
** plan_id **
|
** uniqueidentifier **
|
维护计划 ID
** database_name **
|
** sysname **
|
数据库名
8、 sysdbmaintplan_history
每个维护计划完成一次包含一行,本表保存在 ** msdb ** 中。
列名
|
数据类型
|
描述
---|---|---
sequence_id
|
int
| <