다음을 통해 공유


ALTER INDEX(선택적 XML 인덱스)

적용 대상: SQL ServerAzure SQL Database Azure SQL Managed Instance

기존 선택적 XML 인덱스를 수정합니다. ALTER INDEX 문은 다음 항목 중 하나 이상을 변경합니다.

  • 인덱싱된 경로 목록(FOR 절)

  • 네임스페이스 목록(WITH XMLNAMESPACES 절)

  • 인덱스 옵션(WITH 절)

보조 선택적 XML 인덱스는 변경할 수없습니다. 자세한 내용은 보조 선택적 XML 인덱스 만들기, 변경 및 삭제를 참조하세요.

Transact-SQL 구문 표기 규칙

구문

ALTER INDEX index_name  
    ON <table_object>   
    [WITH XMLNAMESPACES ( <xmlnamespace_list> )]  
    FOR ( <promoted_node_path_action_list> )  
    [WITH ( <index_options> )]  
  
<table_object> ::=   
{ database_name.schema_name.table_name | schema_name.table_name | table_name }  
<promoted_node_path_action_list> ::=   
<promoted_node_path_action_item> [, <promoted_node_path_action_list>]  
  
<promoted_node_path_action_item>::=   
<add_node_path_item_action> | <remove_node_path_item_action>  
  
<add_node_path_item_action> ::=  
ADD <path_name> = <promoted_node_path_item>  
  
<promoted_node_path_item>::=  
<xquery_node_path_item> | <sql_values_node_path_item>  
  
<remove_node_path_item_action> ::= REMOVE <path_name>   
  
<path_name_or_typed_node_path>::=   
<path_name> | <typed_node_path>  
  
<typed_node_path> ::=   
<node_path> [[AS XQUERY <xsd_type_ext>] | [AS SQL <sql_type>]]  
  
<xquery_node_path_item> ::=   
<node_path> [AS XQUERY <xsd_type_or_node_hint>] [SINGLETON]  
  
<xsd_type_or_node_hint> ::=   
[<xsd_type>] [MAXLENGTH(x)] | 'node()'  
  
<sql_values_node_path_item> ::=   
<node_path> AS SQL <sql_type> [SINGLETON]  
  
<node_path> ::=   
character_string_literal  
  
<xsd_type_ext> ::=   
character_string_literal  
  
<sql_type> ::=   
identifier  
  
<path_name> ::=   
identifier  
  
<xmlnamespace_list> ::=   
<xmlnamespace_item> [, <xmlnamespace_list>]  
  
<xmlnamespace_item> ::=   
<xmlnamespace_uri> AS <xmlnamespace_prefix>  
  
<xml_namespace_uri> ::= character_string_literal  
<xml_namespace_prefix> ::= identifier  
  
<index_options> ::=   
(   
  | PAD_INDEX  = { ON | OFF }  
  | FILLFACTOR = fillfactor  
  | SORT_IN_TEMPDB = { ON | OFF }  
  | IGNORE_DUP_KEY =OFF  
  | DROP_EXISTING = { ON | OFF }  
  | ONLINE =OFF  
  | ALLOW_ROW_LOCKS = { ON | OFF }  
  | ALLOW_PAGE_LOCKS = { ON | OFF }  
  | MAXDOP = max_degree_of_parallelism  
)  

인수

index_name
변경할 기존 인덱스의 이름입니다.

<table_object>
인덱싱할 XML 열이 포함된 테이블입니다. 다음 형식 중 하나를 사용합니다.

  • database_name.schema_name.table_name

  • database_name..table_name

  • schema_name.table_name

  • table_name

[WITH XMLNAMESPACES (<xmlnamespace_list>)]
인덱싱할 경로에서 사용하는 네임스페이스 목록입니다. WITH XMLNAMESPACES 절의 구문에 대한 자세한 내용은 WITH XMLNAMESPACES(Transact-SQL)를 참조하세요.

FOR (<promoted_node_path_action_list>)
추가 또는 제거할 인덱싱된 경로의 목록입니다.

  • 경로를 추가합니다. 경로를 추가할 때는 CREATE SELECTIVE XML INDEX 문과 함께 경로를 만드는 데 사용되는 구문과 동일한 구문을 사용합니다. CREATE 또는 ALTER 문에 지정할 수 있는 경로에 대한 자세한 내용은 선택적 XML 인덱스에 대한 경로 및 최적화 힌트 지정을 참조하세요.

  • 경로를 제거합니다. 경로를 제거할 때는 해당 경로를 만들 때 지정한 경로 이름을 제공합니다.

[WITH (<index_options>)]
FOR 절 없이 ALTER INDEX를 사용할 때는 <index_options>만 지정할 수 있습니다. ALTER INDEX를 사용하여 인덱스에서 경로를 추가 또는 제거할 때는 인덱스 옵션이 잘못된 인수가 아닙니다. 인덱스 옵션에 대한 자세한 내용은 CREATE XML INDEX(선택적 XML 인덱스)를 참조하세요.

참고 항목

SQL Server 2014(12.x) 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

설명

중요

ALTER INDEX 문을 실행하면 선택적 XML 인덱스가 항상 다시 작성됩니다. 이 프로세스가 서버 리소스에 미치는 영향을 고려해야 합니다.

보안

사용 권한

ALTER INDEX를 실행하려면 테이블 또는 뷰에 대한 ALTER 권한이 필요합니다.

예제

다음 예에서는 ALTER INDEX 문을 보여 줍니다. 이 문은 인덱스의 XQuery 부분에 '/a/b/m' 경로를 추가하고 CREATE SELECTIVE XML INDEX(Transact-SQL) 항목의 예에서 만든 인덱스의 SQL 부분에서 '/a/b/e' 경로를 삭제합니다. 삭제할 경로는 해당 경로를 만들 때 지정한 경로 이름으로 식별됩니다.

ALTER INDEX sxi_index  
ON Tbl  
FOR   
(  
    ADD pathm = '/a/b/m' as XQUERY 'node()' ,  
    REMOVE pathabe  
);  

다음 예에서는 인덱스 옵션을 지정하는 ALTER INDEX 문을 보여 줍니다. 인덱스 옵션이 허용되는 이유는 이 문이 FOR 절을 사용하여 경로를 추가하거나 제거하지 않기 때문입니다.

ALTER INDEX sxi_index  
ON Tbl  
PAD_INDEX = ON;  

참고 항목

SXI(선택적 XML 인덱스)
선택적 XML 인덱스 만들기, 변경 및 삭제
선택적 XML 인덱스에 대한 경로 및 최적화 힌트 지정