ALTER INDEX (indici XML selettivi)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Modifica un indice XML selettivo esistente. L'istruzione ALTER INDEX modifica uno o più elementi tra quelli indicati di seguito:

  • Elenco di percorsi indicizzati (clausola FOR).

  • Elenco degli spazi dei nomi (clausola WITH XMLNAMESPACES).

  • Opzioni di indice (clausola WITH).

Non è possibile modificare indici XML selettivi secondari. Per altre informazioni, vedere Creare, modificare o eliminare indici XML selettivi secondari.

Convenzioni di sintassi Transact-SQL

Sintassi

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  
)  

Argomenti

index_name
Nome dell'indice esistente che si desidera modificare.

<table_object>
Tabella contenente la colonna XML che si desidera indicizzare. Utilizzare uno dei seguenti formati:

  • database_name.schema_name.table_name

  • database_name..table_name

  • schema_name.table_name

  • table_name

[WITH XMLNAMESPACES (<xmlnamespace_list>)]
Elenco degli spazi dei nomi utilizzati nei percorsi da indicizzare. Per informazioni sulla sintassi della clausola WITH XMLNAMESPACES, vedere WITH XMLNAMESPACES (Transact-SQL).

FOR (<promoted_node_path_action_list>)
Elenco dei percorsi indicizzati che si desidera aggiungere o rimuovere.

  • Usare ADD per aggiungere un percorso. Per aggiungere un percorso, usare la stessa sintassi usata per generare percorsi nell'istruzione CREATE SELECTIVE XML INDEX. Per informazioni sui percorsi che è possibile specificare nell'istruzione CREATE o ALTER, vedere Specificare percorsi e hint di ottimizzazione per indici XML selettivi.

  • Usare REMOVE per rimuovere un percorso. Se si rimuove un percorso con REMOVE, specificare il nome assegnato al percorso in fase di creazione.

[WITH (<index_options>)]
È possibile specificare <index_options> solo se si usa ALTER INDEX senza la clausola FOR. Se si utilizza ALTER INDEX per aggiungere o rimuovere percorsi nell'indice, le opzioni dell'indice sono argomenti non validi. Per altre informazioni sulle opzioni di indicizzazione, vedere CREATE XML INDEX (indici XML selettivi).

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Osservazioni:

Importante

Se si esegue un'istruzione ALTER INDEX, l'indice XML selettivo viene sempre ricompilato. Considerare l'impatto di questo processo sulle risorse del server.

Sicurezza

Autorizzazioni

Per eseguire ALTER INDEX, è necessario disporre dell'autorizzazione ALTER per la tabella o la vista.

Esempi

Nell'esempio seguente viene illustrata un'istruzione ALTER INDEX. Questa istruzione aggiunge il percorso '/a/b/m' alla parte XQuery dell'indice ed elimina il percorso '/a/b/e' dalla parte SQL dell'indice creato nell'esempio nell'argomento CREATE SELECTIVE XML INDEX (Transact-SQL). Il percorso da eliminare viene identificato dal nome fornito al momento della creazione.

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

Nell'esempio seguente viene illustrata un'istruzione ALTER INDEX che specifica opzioni di indice. Le opzioni di indice sono consentite poiché l'istruzione non utilizza una clausola FOR per aggiungere o rimuovere percorsi.

ALTER INDEX sxi_index  
ON Tbl  
PAD_INDEX = ON;  

Vedi anche

Indici XML selettivi (SXI)
Creare, modificare o eliminare indici XML selettivi
Specificare percorsi e hint di ottimizzazione per indici XML selettivi