创建维护计划
适用于: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
创建维护计划
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在标准栏上,选择“新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。
在此示例中,代码创建一个在 23:30 (晚上 11:30 ) 运行的每日 SQL 代理作业,该作业将重新组织数据库中表
AdventureWorks2019
的所有索引HumanResources.Employee
。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 [AdventureWorks2019]; GO ALTER INDEX [AK_Employee_LoginID] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2019]; GO ALTER INDEX [AK_Employee_NationalIDNumber] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2019]; GO ALTER INDEX [AK_Employee_rowguid] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2019]; GO ALTER INDEX [IX_Employee_OrganizationLevel_OrganizationNode] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2019]; GO ALTER INDEX [IX_Employee_OrganizationNode] ON [HumanResources].[Employee] REORGANIZE WITH (LOB_COMPACTION = ON); GO USE [AdventureWorks2019]; 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