XML 인덱스 수정Modify XML Indexes

ALTER INDEX(Transact-SQL) Transact-SQLTransact-SQL DDL 문은 기존의 XML 인덱스와 비 XML 인덱스를 수정하는 데 사용할 수 없습니다.The ALTER INDEX (Transact-SQL) Transact-SQLTransact-SQL DDL statement can be used to modify existing XML and non-XML indexes. 그러나 모든 ALTER INDEX 옵션을 XML 인덱스에 사용할 수 있는 것은 아닙니다.However, not all the ALTER INDEX options are available to XML indexes. XML 인덱스를 수정할 때 다음 옵션은 유효하지 않습니다.The following options are not valid when modifying XML indexes:

  • 다시 작성 및 설정 옵션인 IGNORE_DUP_KEY는 XML 인덱스에 대해 유효하지 않습니다.The rebuild and set option IGNORE_DUP_KEY is not valid for XML indexes. 다시 작성 옵션 ONLINE은 보조 XML 인덱스에 대해 OFF로 설정해야 합니다.The rebuild option ONLINE must be set to OFF for secondary XML indexes. DROP_EXISTING 옵션은 ALTER INDEX 문에서 허용되지 않습니다.The option DROP_EXISTING is not permitted in the ALTER INDEX statement.

  • 사용자 테이블에서 PRIMARY KEY 제약 조건을 수정하면 자동으로 XML 인덱스에 전파되지 않습니다.The modifications of the primary key constraint in the user table are not automatically propagated to XML indexes. 사용자는 먼저 XML 인덱스를 삭제한 다음 다시 작성해야 합니다.The user must drop the XML indexes first and then re-create them.

  • ALTER INDEX ALL이 지정되면 비-XML 인덱스 및 XML 인덱스 모두에 적용됩니다.If ALTER INDEX ALL is specified, it applies to both non-XML and XML indexes. 인덱싱 옵션은 두 가지 인덱스 유형에 모두 유효하지 않도록 지정할 수 있습니다.Indexing options may be specified that are not valid for both types of indexes. 이 경우 전체 문이 실패합니다.In this case, the whole statement fails.

예제: XML 인덱스 수정Example: Modifying an XML Index

다음 예에서는 XML 인덱스가 생성되고 ALLOW_ROW_LOCKS 옵션을 OFF로 설정하여 수정됩니다.In the following example, an XML index is created and then modified by setting the option ALLOW_ROW_LOCKS to OFF. ALLOW_ROW_LOCKSOFF일 때는 행이 잠기지 않고 페이지 수준 및 테이블 수준의 잠금을 사용하여 지정된 인덱스에 대한 액세스가 설정됩니다.When ALLOW_ROW_LOCKS is OFF, rows are not locked and access to the specified indexes is obtained by using page-and table-level locks.

CREATE TABLE T (Col1 INT PRIMARY KEY, XmlCol XML)  
GO  
-- Create primary XML index.   
CREATE PRIMARY XML INDEX PIdx_T_XmlCol   
ON T(XmlCol)  
GO  
-- Note the type 3 is index on XML type.  
SELECT *  
FROM sys.xml_indexes  
WHERE object_id = object_id('T')  
AND name='PIdx_T_XmlCol'  

-- Modify and set an index option.  
ALTER INDEX PIdx_T_XmlCol on T   
SET (ALLOW_ROW_LOCKS = OFF)  

예제: XML 인덱스 활성화 및 비활성화Example: Disabling and Enabling an XML Index

기본적으로 XML 인덱스는 활성화됩니다.By default, an XML index is enabled. XML 인덱스가 비활성화되어 있는 경우 XML 열에 대해 실행되는 쿼리에서는 해당 XML 인덱스를 사용할 수 없습니다.If an XML index is disabled, the queries running against the XML column do not use the XML index. XML 인덱스를 활성화하려면 ALTER INDEX 옵션과 함께 REBUILD 를 사용합니다.To enable an XML index, use ALTER INDEX with the REBUILD option.

CREATE TABLE T (Col1 INT PRIMARY KEY, XmlCol XML)  
GO  
CREATE PRIMARY XML INDEX PIdx_T_XmlCol ON T(XmlCol)  
GO  
ALTER INDEX PIdx_T_XmlCol on T DISABLE  
Go  
-- Verify index is disabled.  
SELECT *  
FROM sys.xml_indexes  
WHERE object_id = object_id('T')  
AND name='PIdx_T_XmlCol'  
-- Rebuild the index.  
ALTER INDEX PIdx_T_XmlCol on T REBUILD  
Go  

참고 항목See Also

XML 인덱스(SQL Server)XML Indexes (SQL Server)