被定期自动执行的维护计划:
- 用新的填充(占空)因子重建索引以重组数据和索引页上的数据。这确保数据库页包含相等分布的数据和剩余空间 ,这允许未来更快速成长。
- 从数据库页中移出空数据页压缩数据文件。
- 更新索引统计以确保查询优化有表分布数据值得最新信息。这允许查询优化作出访问数据的最优途径的更好的判断,因为它有关于数据存储在数据库中的更多信息。虽然索引统计被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 | 数据库名 |
每个维护计划完成一次包含一行,本表保存在msdb 中。
列名 | 数据类型 | 描述 |
sequence_id | int | 维护计划执行历史顺序号 |
plan_id | uniqueidentifier | 维护计划 ID. |
plan_name | sysname | 维护计划名. |
database_name | sysname | 相关计划数据库名 |
server_name | sysname | 系统名 |
activity | nvarchar(128) | 维护计划激活执行 (例如备份事物日志等). |
succeeded | bit | 0 = 成功1 = 失败 |
end_time | datetime | 每次行动完成时间 |
duration | int | 必须完成行动的时间长度 |
start_time | datetime | 行动开始时间 |
error_number | int | 失败报告的错误数 |
message | nvarchar(512) | sqlmaint发生的消息. |
每个维护计划job包含一行. 本表保存在msdb 中。
列名 | 数据类型 | 描述 |
plan_id | uniqueidentifier | 维护计划ID |
job_id | uniqueidentifier | job ID |
每个数据库维护计划包含一行. 本表保存在msdb 中。
Column name | Data type | Description |
plan_id | uniqueidentifier | 维护计划ID |
plan_name | sysname | 维护计划名. |
date_created | datetime | 计划创建日期. |
owner | sysname | 计划拥有者 |
max_history_rows | int | 计划在系统表中记录历史的最大分配行数 |
remote_history_server | sysname | 写历史报告的远程服务器名 |
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. |
log_shipping | bit | 日志运行状态0 = 失效1 = 激活 |