Condividi tramite


ALTER INDEX (indici XML selettivi)

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).

Per ulteriori informazioni, vedere gli argomenti seguenti:

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

Icona di collegamento a un argomento Convenzioni della 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 ] . | 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
)

Argomenti

Clausola ALTER

  • index_name
    Nome dell'indice esistente che si desidera modificare.

Ad esempio: ALTER INDEX sxi_index

Clausola ON

  • <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

Ad esempio: ON Tbl

Clausola 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).

Clausola FOR

  • <promoted_node_path_action_list>
    Elenco dei percorsi indicizzati che si desidera aggiungere o rimuovere.

    • Aggiungere un percorso. Per aggiungere un percorso, ricorrere alla stessa sintassi utilizzata 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.

    • Rimuovere un percorso. Se si rimuove un percorso, fornire il nome specificato per il percorso in fase di creazione.

Esempio:

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

Opzioni per indici

  • <index_options>
    Per informazioni sulle opzioni di indice, vedere CREATE XML INDEX (indici XML selettivi).

    È possibile specificare <index_options> solo se si utilizza 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.

Ad esempio: PAD_INDEX = ON

Osservazioni

Nota importanteImportante

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

Limitazioni e restrizioni

È possibile specificare <index_options> solo se si utilizza 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.

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. Con questa istruzione il percorso '/a/b/m' viene aggiunto alla parte XQuery dell'indice e il percorso '/a/b/e' viene eliminato dalla parte SQL dell'indice creato nell'esempio nell'argomento CREATE SELECTIVE XML INDEX. 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

Vedere anche

Concetti

Indici XML selettivi

Creare, modificare o eliminare indici XML selettivi

Specificare percorsi e hint di ottimizzazione per indici XML selettivi