ALTER INDEX (Index XML sélectifs)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Modifie un index XML sélectif existant. L’énoncé ALTER INDEX modifie un ou plusieurs des éléments suivants :

  • La liste de chemins d'accès indexés (clause FOR).

  • La liste des espaces de noms (clause WITH XMLNAMESPACES).

  • Les options d'index (clause WITH).

Vous ne pouvez pas modifier des index XML secondaires sélectifs. Pour plus d’informations, consultez Créer, modifier ou supprimer des index XML secondaires sélectifs.

Conventions de la syntaxe Transact-SQL

Syntaxe

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  
)  

Arguments

index_name
Nom de l'index existant à modifier.

<table_object>
Table contenant la colonne XML à indexer. Utilisez l'un des éléments suivants :

  • database_name.schema_name.table_name

  • database_name..table_name

  • schema_name.table_name

  • table_name

[AVEC XMLNAMESPACES (<>)]
Liste des espaces de noms utilisés par les chemins d'accès à indexer. Pour plus d’informations sur la syntaxe de la clause WITH XMLNAMESPACES, consultez WITH XMLNAMESPACES (Transact-SQL).

POUR (<promoted_node_path_action_list>)
Liste des chemins d'accès indexés à ajouter ou à supprimer.

  • Ajouter un chemin d'accès Lorsque vous AJOUTEZ un chemin, vous utilisez la même syntaxe que celle utilisée pour créer des chemins avec l’énoncé CREATE SELECTIVE XML INDEX . Pour plus d’informations sur les chemins que vous pouvez spécifier dans l’instruction CREATE ou ALTER, consultez Spécifier les chemins d’accès et les indicateurs d’optimisation des index XML sélectifs.

  • Supprimer un chemin d'accès. Lorsque vous SUPPRIMEZ un chemin d'accès, vous devez fournir le nom qui a été donné au chemin d'accès au moment de sa création.

[AVEC (<index_options>)]
Vous ne pouvez spécifier <index_options> que lorsque vous utilisez ALTER INDEX sans la clause FOR. Lorsque vous utilisez ALTER INDEX pour ajouter ou supprimer des chemins dans l’index, les options d’index ne sont pas des arguments valides. Pour des informations sur les options d’index, voir CREATE XML INDEX (Sélectifs d’index XML).

Notes

Important

Lorsque vous exécutez une ALTER INDEX instruction, l’index XML sélectif est toujours reconstruit. Assurez-vous de prendre en compte l'impact de ce processus sur les ressources du serveur.

Sécurité

Autorisations

L’autorisation ALTER sur la table ou la vue est requise pour exécuter ALTER INDEX.

Exemples

L’exemple suivant montre une ALTER INDEX instruction. Cette instruction ajoute le chemin '/a/b/m' vers la partie XQuery de l’index et supprime le chemin '/a/b/e' de la partie SQL de l’index créé dans l’exemple du sujet CREATE SELECTIVE XML INDEX (Transact-SQL). Le chemin d'accès à supprimer est identifié par le nom qui lui a été donné lors de sa création.

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

L’exemple suivant montre une ALTER INDEX instruction qui spécifie les options d’index. Les options d'index sont autorisées, car l'instruction n'utilise pas de clause FOR pour ajouter ou supprimer des chemins d'accès.

ALTER INDEX sxi_index  
ON Tbl  
PAD_INDEX = ON;  

Voir aussi

Index XML sélectifs (SXI)
Créer, modifier ou supprimer des index XML sélectifs
Spécifier les chemins d’accès et les indicateurs d’optimisation des index XML sélectifs