Freigeben über


ALTER INDEX (selektive XML-Indizes)

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

Weitere Informationen finden Sie in folgenden Themen:

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.

Themenlink (Symbol) 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 ] . | 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
)

Argumente

ALTER-Klausel

  • index_name
    Der Name des vorhandenen, zu ändernden Indexes.

Beispiel: ALTER INDEX sxi_index

ON-Klausel

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

Beispiel: ON Tbl

WITH XMLNAMESPACES-Klausel

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

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

Beispiel:

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

Indexoptionen

  • <index_options>
    Informationen zu den Indexoptionen finden Sie unter CREATE XML INDEX (selektive XML-Indizes).

    Sie können nur dann <index_options> angeben, wann 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.

Beispiel: PAD_INDEX = ON

Hinweise

Wichtiger HinweisWichtig

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.

Einschränkungen

Sie können nur dann <index_options> angeben, wann 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.

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' vom SQL-Teil des Indexes, der im Beispiel im Thema CREATE SELECTIVE XML INDEX erstellt wurde, gelöscht. 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

Siehe auch

Konzepte

Selektive XML-Indizes (SXI)

Erstellen, Ändern und Löschen selektiver XML-Indizes

Angeben von Pfaden und Optimierungshinweisen für selektive XML-Indizes