Compartilhar via


ALTER INDEX (índices XML seletivos)

Modifica um índice XML seletivo existente. A instrução ALTER INDEX altera um ou mais dos seguintes itens:

  • A lista de caminhos indexados (cláusula FOR).

  • A lista de namespaces (cláusula WITH XMLNAMESPACES).

  • As opções de índice (cláusula WITH).

Para obter mais informações, consulte os tópicos a seguir:

Você não pode alterar índices XML seletivos secundários. Para obter mais informações, consulte Criar, alterar e remover índices XML seletivos secundários.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

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
)

Argumentos

Cláusula ALTER

  • index_name
    Nome do índice existente a ser alterado.

Por exemplo: ALTER INDEX sxi_index

Cláusula ON

  • <table_object>
    Tabela que contém a coluna XML a ser indexada. Use um destes formatos:

    • database_name.schema_name.table_name

    • database_name..table_name

    • schema_name.table_name

    • table_name

Por exemplo: ON Tbl

cláusula WITH XMLNAMESPACES

  • <xmlnamespace_list>
    Lista de namespaces usados pelos caminhos a serem indexados. Para obter informações sobre a sintaxe da cláusula WITH XMLNAMESPACES, consulte WITH XMLNAMESPACES (Transact-SQL).

cláusula FOR

  • <promoted_node_path_action_list>
    Lista de caminhos indexados a serem adicionados ou removidos.

    • Use ADD para adicionar um caminho. Ao usar ADD para adicionar um caminho, use a mesma sintaxe usada para criar caminhos com a instrução CREATE SELECTIVE XML INDEX. Para obter informações sobre os caminhos a serem especificados na instrução CREATE ou ALTER, consulte Especificar caminhos e dicas de otimização para índices XML seletivos.

    • Use REMOVE para remover um caminho. Ao usar REMOVE para remover um caminho, forneça o nome que foi atribuído ao caminho quando ele foi criado.

Por exemplo:

FOR 
(
    ADD pathm = '/a/b/m' as XQUERY 'node()' ,
    REMOVE pathabe
)

Opções de índice

  • <index_options>
    Para obter informações sobre as opções de índice, consulte CREATE XML INDEX (índices XML seletivos).

    Você só pode especificar <index_options> quando usar ALTER INDEX sem a cláusula FOR. Quando você usar ALTER INDEX para adicionar ou remover caminhos no índice, as opções de índice não serão argumentos válidos.

Por exemplo: PAD_INDEX = ON

Comentários

Observação importanteImportante

Quando você executa uma instrução ALTER INDEX, o índice XML seletivo é sempre recriado. Considere o impacto desse processo em recursos do servidor.

Limitações e restrições

Você só pode especificar <index_options> quando usa ALTER INDEX sem a cláusula FOR. Quando você usar ALTER INDEX para adicionar ou remover caminhos no índice, as opções de índice não serão argumentos válidos.

Segurança

Permissões

Para executar ALTER INDEX, a permissão ALTER na tabela ou exibição é necessária.

Exemplos

O exemplo a seguir mostra uma instrução ALTER INDEX. Essa instrução adiciona o caminho '/a/b/m' à parte XQuery do índice e exclui o caminho '/a/b/e' da parte SQL do índice criado no exemplo no tópico CREATE SELECTIVE XML INDEX. O caminho a ser excluído é identificado pelo nome atribuído a ele quando foi criado.

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

O exemplo a seguir mostra uma instrução ALTER INDEX que especifica opções de índice. As opções de índice são permitidas porque a instrução não usa uma cláusula FOR para adicionar ou remover caminhos.

ALTER INDEX sxi_index
ON Tbl
PAD_INDEX = ON

Consulte também

Conceitos

SXI (índices XML seletivos)

Criar, alterar e remover índices XML seletivos

Especificar caminhos e dicas de otimização para índices XML seletivos