ALTER INDEX (índices XML selectivos)

 

**ESTE TEMA SE APLICA A:** ![](../Image/Applies%20to/yes.png)SQL Server \(a partir de 2012\) ![](../Image/Applies%20to/yes.png)Base de datos SQL de Azure ![](../Image/Applies%20to/no.png)Almacenamiento de datos SQL de Azure ![](../Image/Applies%20to/no.png)Almacenamiento de datos paralelos

Modifica un índice XML selectivo existente. La instrucción ALTER INDEX cambia uno o varios de los elementos siguientes:

  • La lista de rutas de acceso indizadas (cláusula FOR).

  • La lista de espacios de nombres (cláusula WITH XMLNAMESPACES).

  • Las opciones de índice (cláusula WITH).

No puede modificar índices XML selectivos secundarios. Para obtener más información, consulte Crear, modificar y quitar índices XML selectivos secundarios.

Se aplica a: de SQL Server (SQL Server 2012 a la versión actual) ), Base de datos SQL de Azure.

Topic link icon Convenciones de sintaxis de 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 ] . | schema_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
Es el nombre del índice existente que se va a modificar.

<table_object>
Es la tabla que contiene la columna XML que se va a indizar. Use uno de los formatos siguientes:

  • database_name.schema_name.table_name

  • database_name..table_name

  • schema_name.table_name

  • table_name

[WITH XMLNAMESPACES ( <xmlnamespace_list> )]
Es la lista de espacios de nombres usados por las rutas de acceso que se van a indizar. Para obtener información acerca de la sintaxis de la cláusula WITH XMLNAMESPACES, vea WITH XMLNAMESPACES (Transact-SQL).

FOR ( <promoted_node_path_action_list> )
Es la lista de rutas de acceso indizadas que se van a agregar o quitar.

  • Agregar (con ADD) una ruta de acceso. Cuando se agrega (con ADD) una ruta de acceso, se emplea la misma sintaxis que se usa para crear rutas de acceso con la instrucción CREATE SELECTIVE XML INDEX. Para obtener información acerca de las rutas de acceso que puede especificar en la instrucción CREATE o ALTER, vea Especificar rutas de acceso y sugerencias de optimización para índices XML selectivos.

  • QUITAR (con REMOVE) una ruta de acceso. Cuando se quita (con REMOVE) una ruta de acceso, debe proporcionar el nombre especificado para la ruta de acceso cuando se creó.

[WITH ( <index_options> )]
Solo se puede especificar <index_options> cuando se usa ALTER INDEX con la cláusula FOR. Cuando se usa ALTER INDEX para agregar o quitar rutas de acceso del índice, las opciones de índice no son argumentos válidos. Para obtener información sobre las opciones de índice, vea CREATE XML INDEX (índices XML selectivos).

System_CAPS_ICON_important.jpg Importante


Al ejecutar una instrucción ALTER INDEX, siempre se vuelve a generar el índice XML selectivo. Debe tener en cuenta el impacto de este proceso sobre los recursos de servidor.

Permisos

Se necesita el permiso ALTER en la tabla o la vista para poder ejecutar ALTER INDEX.

En el ejemplo siguiente se muestra una instrucción ALTER INDEX. Esta instrucción agrega la ruta de acceso '/a/b/m' a la parte XQuery del índice y elimina la ruta de acceso '/a/b/e' de la parte SQL del índice creado en el ejemplo del tema CREAR ÍNDICE XML SELECTIVO (Transact-SQL). La ruta de acceso que se va a eliminar se identifica por el nombre que se especificó cuando se creó.

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

En el ejemplo siguiente se muestra una instrucción ALTER INDEX que especifica opciones de índice. Se permiten opciones de índice porque la instrucción no usa una cláusula FOR para agregar o quitar rutas de acceso.

ALTER INDEX sxi_index  
ON Tbl  
PAD_INDEX = ON;  

Índices XML selectivos (SXI)
Crear, modificar y quitar índices XML selectivos
Especificar rutas de acceso y sugerencias de optimización para índices XML selectivos

Adiciones de comunidad

Mostrar: