인덱스 및 제약 조건 활성화Enable Indexes and Constraints

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이 항목에서는 SQL Server 2017SQL Server 2017 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL에서 비활성화된 인덱스를 활성화하는 방법에 대해 설명합니다.This topic describes how to enable a disabled index in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 비활성화된 인덱스는 다시 작성되거나 삭제될 때까지 비활성화된 상태로 유지됩니다.After an index is disabled, it remains in a disabled state until it is rebuilt or dropped

항목 내용In This Topic

시작하기 전 주의 사항 Before You Begin

제한 사항 Limitations and Restrictions

  • 인덱스를 다시 작성한 후에 해당 인덱스를 비활성화하여 비활성화된 제약 조건은 수동으로 활성화해야 합니다.After rebuilding the index, any constraints that were disabled because of disabling the index must be manually enabled. 연관된 인덱스를 다시 작성하여 PRIMARY KEY 및 UNIQUE 제약 조건을 활성화합니다.PRIMARY KEY and UNIQUE constraints are enabled by rebuilding the associated index. PRIMARY KEY 또는 UNIQUE 제약 조건을 참조하는 FOREIGN KEY 제약 조건을 활성화하기 전에 이 인덱스를 다시 작성(활성화)해야 합니다.This index must be rebuilt (enabled) before you can enable FOREIGN KEY constraints that reference the PRIMARY KEY or UNIQUE constraint. ALTER TABLE CHECK CONSTRAINT 문을 사용하여 FOREIGN KEY 제약 조건을 활성화합니다.FOREIGN KEY constraints are enabled by using the ALTER TABLE CHECK CONSTRAINT statement.

  • ONLINE 옵션이 ON으로 설정된 경우 비활성화된 클러스터형 인덱스를 다시 작성할 수 없습니다.Rebuilding a disabled clustered index cannot be performed when the ONLINE option is set to ON.

  • 클러스터형 인덱스를 비활성화하거나 활성화하고 비클러스터형 인덱스를 비활성화하면 클러스터형 인덱스 동작으로 인해 다음과 같은 결과가 비활성화된 비클러스터형 인덱스에 나타납니다.When the clustered index is disabled or enabled and the nonclustered index is disabled, the clustered index action has the following results on the disabled nonclustered index.

    클러스터형 인덱스 동작Clustered Index Action 비활성화된 비클러스터형 인덱스 …Disabled Nonclustered Index …
    ALTER INDEX REBUILDALTER INDEX REBUILD. 비활성화된 상태로 유지됩니다.Remains disabled.
    ALTER INDEX ALL REBUILDALTER INDEX ALL REBUILD. 다시 작성되고 활성화됩니다.Is rebuilt and enabled.
    DROP INDEXDROP INDEX. 비활성화된 상태로 유지됩니다.Remains disabled.
    CREATE INDEX WITH DROP_EXISTINGCREATE INDEX WITH DROP_EXISTING. 비활성화된 상태로 유지됩니다.Remains disabled.

    클러스터형 인덱스를 새로 만들 때의 동작은 ALTER INDEX ALL REBUILD를 사용할 때와 동일합니다.Creating a new clustered index, behaves the same as ALTER INDEX ALL REBUILD.

  • 클러스터형 인덱스와 연관된 비클러스터형 인덱스에 허용된 동작은 두 인덱스 유형의 상태(비활성화되어 있거나 활성화되어 있는지)에 따라 다릅니다.Allowed actions on nonclustered indexes associated with a clustered index depend on the state, whether disabled or enabled, of both index types. 다음 표에는 비클러스터형 인덱스에 허용된 동작이 요약되어 있습니다.The following table summarizes the allowed actions on nonclustered indexes.

    비클러스터형 인덱스 동작Nonclustered Index Action 클러스터형 인덱스와 비클러스터형 인덱스가 모두 비활성화됩니다.When both the clustered and nonclustered indexes are disabled. 클러스터형 인덱스가 활성화되고 비클러스터형 인덱스는 비활성화되거나 활성화됩니다.When the clustered index is enabled and the nonclustered index is in either state.
    ALTER INDEX REBUILDALTER INDEX REBUILD. 동작이 실패합니다.The action fails. 동작이 성공합니다.The action succeeds.
    DROP INDEXDROP INDEX. 동작이 성공합니다.The action succeeds. 동작이 성공합니다.The action succeeds.
    CREATE INDEX WITH DROP_EXISTINGCREATE INDEX WITH DROP_EXISTING. 동작이 실패합니다.The action fails. 동작이 성공합니다.The action succeeds.

보안 Security

사용 권한 Permissions

테이블이나 뷰에 대한 ALTER 권한이 필요합니다.Requires ALTER permission on the table or view. DBCC DBREINDEX를 사용하는 경우 사용자는 테이블의 소유자이거나 sysadmin 고정 서버 역할 또는 db_ddladmindb_owner 고정 데이터베이스 역할의 멤버여야 합니다.If using DBCC DBREINDEX, eser must either own the table or be a member of the sysadmin fixed server role or the db_ddladmin and db_owner fixed database roles.

SQL Server Management Studio 사용 Using SQL Server Management Studio

비활성화된 인덱스를 활성화하려면To enable a disabled index

  1. 개체 탐색기에서 더하기 기호를 클릭하여 인덱스를 활성화할 테이블이 포함된 데이터베이스를 확장합니다.In Object Explorer, click the plus sign to expand the database that contains the table on which you want to enable an index.

  2. 더하기 기호를 클릭하여 테이블 폴더를 확장합니다.Click the plus sign to expand the Tables folder.

  3. 더하기 기호를 클릭하여 인덱스를 활성화할 테이블을 확장합니다.Click the plus sign to expand the table on which you want to enable an index.

  4. 더하기 기호를 클릭하여 인덱스 폴더를 확장합니다.Click the plus sign to expand the Indexes folder.

  5. 활성화할 인덱스를 마우스 오른쪽 단추로 클릭하고 다시 작성을 선택합니다.Right-click the index you want to enable and select Rebuild.

  6. 인덱스 다시 작성 대화 상자에서 다시 작성할 인덱스 표에 올바른 인덱스가 있는지 확인한 다음 확인을 클릭합니다.In the Rebuild Indexes dialog box, verify that the correct index is in the Indexes to rebuild grid and click OK.

테이블의 모든 인덱스를 활성화하려면To enable all indexes on a table

  1. 개체 탐색기에서 더하기 기호를 클릭하여 인덱스를 활성화할 테이블이 포함된 데이터베이스를 확장합니다.In Object Explorer, click the plus sign to expand the database that contains the table on which you want to enable the indexes.

  2. 더하기 기호를 클릭하여 테이블 폴더를 확장합니다.Click the plus sign to expand the Tables folder.

  3. 더하기 기호를 클릭하여 인덱스를 활성화할 테이블을 확장합니다.Click the plus sign to expand the table on which you want to enable the indexes.

  4. 인덱스 폴더를 마우스 오른쪽 단추로 클릭하고 모두 다시 작성을 선택합니다.Right-click the Indexes folder and select Rebuild All.

  5. 인덱스 다시 작성 대화 상자에서 다시 작성할 인덱스 표에 올바른 인덱스가 있는지 확인한 다음 확인을 클릭합니다.In the Rebuild Indexes dialog box, verify that the correct indexes are in the Indexes to rebuild grid and click OK. 다시 작성할 인덱스 표에서 인덱스를 제거하려면 인덱스를 선택한 다음 Delete 키를 누릅니다.To remove an index from the Indexes to rebuild grid, select the index and then press the Delete key.

    인덱스 다시 작성 대화 상자에는 다음 정보가 표시됩니다.The following information is available in the Rebuild Indexes dialog box:

Transact-SQL 사용 Using Transact-SQL

ALTER INDEX를 사용하여 비활성화된 인덱스를 활성화하려면To enable a disabled index using ALTER INDEX

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    GO  
    -- Enables the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table.  
    
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee  
    REBUILD;   
    GO  
    

CREATE INDEX를 사용하여 비활성화된 인덱스를 활성화하려면To enable a disabled index using CREATE INDEX

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    GO  
    -- re-creates the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table  
    -- using the OrganizationLevel and OrganizationNode columns  
    -- and then deletes the existing IX_Employee_OrganizationLevel_OrganizationNode index  
    CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee  
       (OrganizationLevel, OrganizationNode)  
    WITH (DROP_EXISTING = ON);  
    GO  
    

DBCC DBREINDEX를 사용하여 비활성화된 인덱스를 활성화하려면To enable a disabled index using DBCC DBREINDEX

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;   
    GO  
    -- enables the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);  
    GO  
    

ALTER INDEX를 사용하여 테이블의 모든 인덱스를 활성화하려면To enable all indexes on a table using ALTER INDEX

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    ALTER INDEX ALL ON HumanResources.Employee  
    REBUILD;  
    GO  
    

DBCC DBREINDEX를 사용하여 테이블의 모든 인덱스를 활성화하려면To enable all indexes on a table using DBCC DBREINDEX

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;   
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", " ");  
    GO  
    

    자세한 내용은 ALTER INDEX(Transact-SQL), CREATE INDEX(Transact-SQL)DBCC DBREINDEX(Transact-SQL)를 참조하세요.For more information, see ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL), and DBCC DBREINDEX (Transact-SQL).