다음을 통해 공유


유지 관리 계획 만들기

적용 대상: SQL Server

이 문서에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 단일 서버 또는 다중 서버 유지 관리 계획을 만드는 방법을 설명합니다. Management Studio를 사용하면 유지 관리 계획 마법사 또는 Design Surface를 사용하는 두 가지 방법 중 하나로 유지 관리 계획을 만들 수 있습니다. 마법사는 기본 유지 관리 계획을 만드는 데 가장 적합하며, Design Surface를 사용하여 계획을 만들면 향상된 워크플로를 활용할 수 있습니다.

제한 사항

다중 서버 유지 관리 계획을 만들기 위해서는 하나의 마스터 서버 및 하나 이상의 대상 서버가 있는 다중 서버 환경을 구성해야 합니다. 다중 서버 유지 관리 계획은 마스터 서버에서 만들고 유지 관리해야 합니다. 이러한 계획은 대상 서버에서 볼 수 있지만 유지 관리는 할 수 없습니다.

필수 조건

에이전트 XPs 서버 구성 옵션 을 사용하도록 설정해야 합니다.

사용 권한

유지 관리 계획을 만들거나 관리하려면 sysadmin 고정 서버 역할의 구성원이여야 합니다.

SQL Server Management Studio 사용

유지 관리 계획 마법사를 사용하여 유지 관리 계획 만들기

  1. 개체 탐색기에서 더하기 기호를 선택하여 유지 관리 계획을 만들 서버를 확장합니다.

  2. 더하기 기호를 선택하여 유지 관리 폴더를 확장합니다.

  3. 유지 관리 계획 폴더를 마우스 오른쪽 단추로 클릭하고 유지 관리 계획 마법사를 선택합니다.

  4. 마법사의 단계에 따라 유지 관리 계획을 만듭니다. 자세한 내용은 Use the Maintenance Plan Wizard을 참조하세요.

Design Surface를 사용하여 유지 관리 계획 만들기

  1. 개체 탐색기에서 더하기 기호를 선택하여 유지 관리 계획을 만들 서버를 확장합니다.

  2. 더하기 기호를 선택하여 유지 관리 폴더를 확장합니다.

  3. 유지 관리 계획 폴더를 마우스 오른쪽 단추로 클릭하고 새 유지 관리 계획을 선택합니다.

  4. 유지 관리 계획 만들기(유지 관리 계획 Design Surface)의 단계에 따라 유지 관리 계획을 만듭니다.

Transact-SQL 사용

유지 관리 계획 만들기

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 선택합니다.

  3. 다음 예시를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다.

    이 예제에서 코드는 AdventureWorks2022 데이터베이스의 HumanResources.Employee 테이블에 있는 모든 인덱스를 다시 구성하는 23:30(오후 11시 30분)에 실행되는 일일 SQL 에이전트 작업을 만듭니다.

    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
    

다음 단계