创建维护计划
适用范围:SQL Server
本文介绍了如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中创建单服务器或多服务器维护计划。 通过使用 Management Studio,可以通过以下两种方式创建维护计划:使用维护计划向导或设计图面。 向导是创建基本维护计划的最佳方法,而使用设计图面创建计划允许您使用增强的工作流。
限制和局限
若要创建多服务器维护计划,必须配置包含一个主服务器和一个(或多个)目标服务器的多服务器环境。 必须在主服务器上创建和维护多服务器维护计划。 在目标服务器上可以查看这些计划,但不能进行维护。
先决条件
必须启用 “代理 XP”服务器配置选项 。
权限
若要创建或管理维护计划,您必须是 sysadmin 固定服务器角色的成员。
使用 SQL Server Management Studio
使用维护计划向导创建维护计划
在对象资源管理器中,选择加号以展开要创建维护计划的服务器。
选择加号以展开“管理”文件夹。
右键单击“维护计划”文件夹,然后选择“维护计划向导”。
按照向导中显示的步骤创建维护计划。 有关详细信息,请参阅 Use the Maintenance Plan Wizard。
使用设计图面创建维护计划
在对象资源管理器中,选择加号以展开要创建维护计划的服务器。
选择加号以展开“管理”文件夹。
右键单击“维护计划” 文件夹,然后选择“新建维护计划” 。
按照 创建维护计划(维护计划设计图面) 中的步骤创建维护计划。
使用 Transact-SQL
创建维护计划
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在标准栏上,选择“新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。
在此例中,该代码会创建一个每日 SQL 代理作业,该作业在 23:30(晚上 11:30)运行,以重新组织
HumanResources.Employee
数据库中AdventureWorks2022
表的所有索引。USE [msdb]; GO -- Adds a new job, executed by the SQL Server Agent service, called "HistoryCleanupTask_1". EXEC [dbo].[sp_add_job] @job_name = N'HistoryCleanupTask_1', @enabled = 1, @description = N'Clean up old task history'; GO -- Adds a job step for reorganizing all of the indexes in the HumanResources.Employee table to the HistoryCleanupTask_1 job. EXEC [dbo].[sp_add_jobstep] @job_name = N'HistoryCleanupTask_1', @step_name = N'Reorganize all indexes on HumanResources.Employee table', @subsystem = N'TSQL', @command = N'USE [AdventureWorks2022]; GO ALTER INDEX [AK_Employee_LoginID] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2022]; GO ALTER INDEX [AK_Employee_NationalIDNumber] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2022]; GO ALTER INDEX [AK_Employee_rowguid] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2022]; GO ALTER INDEX [IX_Employee_OrganizationLevel_OrganizationNode] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2022]; GO ALTER INDEX [IX_Employee_OrganizationNode] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2022]; GO ALTER INDEX [PK_Employee_BusinessEntityID] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO', @retry_attempts = 5, @retry_interval = 5; GO -- Creates a schedule named RunOnce that executes every day when the time on the server is 23:30. EXEC [dbo].[sp_add_schedule] @schedule_name = N'RunOnce', @freq_type = 4, @freq_interval = 1, @active_start_time = 233000; GO -- Attaches the RunOnce schedule to the job HistoryCleanupTask_1. EXEC [dbo].[sp_attach_schedule] @job_name = N'HistoryCleanupTask_1', @schedule_name = N'RunOnce'; GO