ALTER INDEX (selektive XML-Indizes)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Ändert einen vorhandenen selektiven XML-Index. Die ALTER INDEX-Anweisung ändert eines oder mehrere der folgenden Elemente:

  • 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

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

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

  • Einen Pfad HINZUFÜGEN. Wenn Sie einen Pfad HINZUFÜGEN, verwenden Sie die gleiche Syntax, die zur Erstellung von Pfaden mit der CREATE SELECTIVE XML INDEX-Anweisung verwendet wird. 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.

[WITH (<index_options>)]
Sie können <index_options> nur angeben, wenn Sie ALTER INDEX ohne die FOR-Klausel verwenden. Wenn Sie ALTER INDEX verwenden, um Pfade im Index hinzuzufügen oder sie daraus zu entfernen, sind die Indexoptionen keine gültigen Argumente. Informationen zu Indexoptionen finden Sie unter CREATE XML INDEX (selektive XML-Indizes).

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Hinweise

Wichtig

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

Sicherheit

Berechtigungen

ALTER-Berechtigung in der Tabelle oder Ansicht ist erforderlich, um ALTER INDEX auszuführen.

Beispiele

Im folgenden Beispiel wird eine ALTER INDEX-Anweisung veranschaulicht. Mit dieser Anweisung wird der Pfad '/a/b/m' dem XQuery-Teil des Indexes hinzugefügt, und der Pfad '/a/b/e' wird aus dem SQL-Teil des Indexes gelöscht, der im Beispiel im Thema CREATE SELECTIVE XML INDEX (Transact-SQL) erstellt wurde. 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  
);  

Im folgenden Beispiel wird eine ALTER INDEX-Anweisung, die Indexoptionen angibt, veranschaulicht. 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