建立維護計畫

適用於:SQL Server

本文說明如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中建立單一伺服器或多伺服器的維護計畫。 使用 Management Studio 時,您可以使用以下兩種方式的其中一種:維護計畫精靈或:使用「維護計畫精靈」或設計介面,建立維護計畫。 本精靈最適用於建立基本的維護計畫,使用設計介面建立計畫時可讓您利用加強的工作流程。

限制事項

若要建立多伺服器維護計畫,必須設定多伺服器環境,其中包含一個主要伺服器以及一或多個目標伺服器。 多伺服器維護計畫必須在主要伺服器上建立和維護。 您可以在目標伺服器上檢視這些計畫,但不能加以維護。

必要條件

必須啟用 Agent XPs 伺服器組態選項

權限

若要建立或管理維護計畫,您必須是 系統管理員 (sysadmin) 固定伺服器角色的成員。

使用 SQL Server Management Studio

使用維護計畫精靈建立維護計畫

  1. 在 [物件總管] 中選取加號,展開您要建立維護計畫的伺服器。

  2. 選取加號展開 [管理] 資料夾。

  3. 以滑鼠右鍵按一下 [維護計畫] 資料夾,然後選取 [維護計畫精靈]。

  4. 請遵循精靈的步驟來建立維護計畫。 如需詳細資訊,請參閱 Use the Maintenance Plan Wizard

使用設計介面建立維護計畫

  1. 在 [物件總管] 中選取加號,展開您要建立維護計畫的伺服器。

  2. 選取加號展開 [管理] 資料夾。

  3. 以滑鼠右鍵按一下 [維護計畫] 資料夾,然後選取 [新增維護計畫]。

  4. 遵循建立維護計畫 (維護計畫設計介面) 中的步驟,建立維護計畫。

使用 Transact-SQL

建立維護計畫

  1. 在物件總管中,連線到資料庫引擎的執行個體。

  2. 在標準列上,選取 [新增查詢] 。

  3. 複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。

    在此範例中,程式碼會建立每天 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
    

下一步