建立維護計畫
適用於: SQL Server
本文說明如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中建立單一伺服器或多伺服器的維護計畫。 使用 Management Studio 時,您可以使用以下兩種方式的其中一種:維護計畫精靈或:使用「維護計畫精靈」或設計介面,建立維護計畫。 本精靈最適用於建立基本的維護計畫,使用設計介面建立計畫時可讓您利用加強的工作流程。
限制事項
若要建立多伺服器維護計畫,必須設定多伺服器環境,其中包含一個主要伺服器以及一或多個目標伺服器。 多伺服器維護計畫必須在主要伺服器上建立和維護。 您可以在目標伺服器上檢視這些計畫,但不能加以維護。
必要條件
必須啟用 Agent XPs 伺服器組態選項 。
權限
若要建立或管理維護計畫,您必須是 系統管理員 (sysadmin) 固定伺服器角色的成員。
使用 SQL Server Management Studio
使用維護計畫精靈建立維護計畫
在 [物件總管] 中選取加號,展開您要建立維護計畫的伺服器。
選取加號展開 [管理] 資料夾。
以滑鼠右鍵按一下 [維護計畫] 資料夾,然後選取 [維護計畫精靈]。
請遵循精靈的步驟來建立維護計畫。 如需詳細資訊,請參閱 Use the Maintenance Plan Wizard。
使用設計介面建立維護計畫
在 [物件總管] 中選取加號,展開您要建立維護計畫的伺服器。
選取加號展開 [管理] 資料夾。
以滑鼠右鍵按一下 [維護計畫] 資料夾,然後選取 [新增維護計畫]。
遵循建立維護計畫 (維護計畫設計介面) 中的步驟,建立維護計畫。
使用 Transact-SQL
建立維護計畫
在物件總管中,連線到資料庫引擎的執行個體。
在標準列上,選取 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。
在此範例中,程式碼會建立每天 23:30 (下午 11:30) 執行的 SQL Agent 作業,重新組織
AdventureWorks2022
資料庫中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 [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