ALTER INDEX (Selektive XML-Indexe)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

Ändert einen vorhandenen selektiven XML-Index. Die Erklärung ALTER INDEX ändert eines oder mehrere der folgenden Punkte:

  • Die Liste der indizierten Pfade (FOR-Klausel).

  • Die Liste der Namespaces (WITH XMLNAMESPACES-Klausel).

  • Die Indexoptionen (WITH-Klausel).

Sie können sekundäre selektive XML-Indizes nicht ändern. Weitere Informationen finden Sie unter Erstellen, Ändern und Löschen sekundärer selektiver XML-Indizes.

Transact-SQL-Syntaxkonventionen

Syntax

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  
)  

Argumente

index_name
Der Name des vorhandenen, zu ändernden Indexes.

<table_object>
Die Tabelle, die die zu indizierende XML-Spalte enthält. Verwenden Sie eines der folgenden Formate:

  • database_name.schema_name.table_name

  • database_name..table_name

  • schema_name.table_name

  • table_name

[MIT XMLNAMESPACES (<xmlnamespace_list>)]
Die Liste der von den zu indizierenden Pfaden verwendeten Namespaces. Weitere Informationen zur Syntax der WITH XMLNAMESPACES-Klausel finden Sie unter WITH XMLNAMESPACES (Transact-SQL).

FÜR (<promoted_node_path_action_list>)
Die Liste der hinzuzufügenden oder zu entfernenden indizierten Pfade.

  • Einen Pfad HINZUFÜGEN. Wenn du einen Pfad hinzufügst, verwendest du dieselbe Syntax, mit der Pfade mit der CREATE SELECTIVE XML INDEX Anweisung erstellt werden. Informationen zu den Pfaden, die Sie in der CREATE- oder der ALTER-Anweisung angeben können, finden Sie unter Angeben von Pfaden und Optimierungshinweisen für selektive XML-Indizes.

  • Einen Pfad ENTFERNEN. Wenn Sie einen Pfad ENTFERNEN, geben Sie den Namen an, der dem Pfad bei seiner Erstellung zugewiesen wurde.

[MIT (<index_options>)]
Du kannst index_options nur angeben<, wenn du es ohne die FOR-Klausel verwendestALTER INDEX.> Wenn Sie ALTER INDEX Pfade im Index hinzufügen oder entfernen, sind die Indexoptionen keine gültigen Argumente. Informationen zu den Indexoptionen finden Sie unterCREATE XML INDEX (Selektive XML-Indexe).

Hinweise

Wichtig

Wenn du eine ALTER INDEX Anweisung ausführst, wird der selektive XML-Index immer neu aufgebaut. Beachten Sie unbedingt die Auswirkungen dieses Prozesses auf Serverressourcen.

Sicherheit

Berechtigungen

ALTER-Berechtigung für die Tabelle oder Ansicht ist erforderlich, um ausgeführt zu werden ALTER INDEX.

Beispiele

Das folgende Beispiel zeigt eine ALTER INDEX Aussage. Diese Anweisung fügt den Pfad '/a/b/m' zum XQuery-Teil des Index hinzu und löscht den Pfad '/a/b/e' aus dem SQL-Teil des im Beispiel im Thema CREATE SELECTIVE XML INDEX erstellten Index (Transact-SQL). Der zu löschende Pfad ist anhand des Namens zu erkennen, der ihm bei der Erstellung zugewiesen wurde.

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

Das folgende Beispiel zeigt eine ALTER INDEX Anweisung, die Indexoptionen angibt. Indexoptionen sind erlaubt, da die Anweisung keine FOR-Klausel verwendet, um Pfade hinzuzufügen oder zu entfernen.

ALTER INDEX sxi_index  
ON Tbl  
PAD_INDEX = ON;  

Weitere Informationen

Selektive XML-Indizes (SXI)
Erstellen, Ändern und Löschen selektiver XML-Indizes
Angeben von Pfaden und Optimierungshinweisen für selektive XML-Indizes