ALTER INDEX (選択的XMLインデックス)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL データベース

既存の選択的 XML インデックスを変更します。 ALTER INDEX文は以下の項目の一つ以上を変更します。

  • インデックス付きパスの一覧 (FOR 句)。

  • 名前空間の一覧 (WITH XMLNAMESPACES 句)。

  • インデックス オプション (WITH 句)。

セカンダリ選択的 XML インデックスを変更することはできません。 詳しくは、「選択的セカンダリ XML インデックスの作成、変更、および削除」をご覧ください。

Transact-SQL 構文表記規則

構文

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  
)  

引数

index_name
変更する既存のインデックスの名前です。

" <table_object>"
インデックスに XML 列を含むテーブルです。 次のいずれかの形式を使用します。

  • database_name.schema_name.table_name

  • database_name..table_name

  • schema_name.table_name

  • table_name

[XMLネームスペース(を使った]<
インデックスを作成するパスで使用される名前空間の一覧を指定します。 WITH XMLNAMESPACES 句の構文については、「WITH XMLNAMESPACES (Transact-SQL)」をご覧ください。

フォー (<promoted_node_path_action_list>)
追加または削除するインデックス付きパスの一覧です。

  • パスを追加 (ADD) します。 パスを追加するときは、 CREATE SELECTIVE XML INDEX 文でパスを作成するのと同じ構文を使います。 CREATE または ALTER ステートメントで指定できるパスについては、「選択的 XML インデックスのパスと最適化ヒントの指定」をご覧ください。

  • パスを削除 (REMOVE) します。 パスを削除 (REMOVE) する場合、パスの作成時にパスに付けられた名前を指定します。

[(<index_options>)付き]
<index_options>を指定できるのは、ALTER INDEXを使わないときだけです。 ALTER INDEXでインデックス内のパスを追加・削除すると、インデックスオプションは有効な引数ではありません。 インデックスオプションの詳細については、 CREATE XML INDEX (選択的XMLインデックス)を参照してください。

解説

重要

ALTER INDEX文を実行すると、選択的なXMLインデックスは常に再構築されます。 サーバーのリソースに対するこの処理の影響を考慮してください。

セキュリティ

アクセス許可

ALTER INDEXを実行するにはテーブルやビューのALTER許可が必要です。

次の例は、 ALTER INDEX ステートメントを示しています。 この文はパス'/a/b/m'をインデックスのXQuery部分に追加し、トピックCREATE SELECTIVE XML INDEX(Transact-SQL)の例で作成されたSQL部分からパス'/a/b/e'を削除します。 削除するパスは、作成時に指定された名前によって識別されます。

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

以下の例は、インデックスオプションを指定する ALTER INDEX 文を示しています。 ステートメントで、パスを追加または削除するために FOR 句を使用しないため、インデックス オプションを使用できます。

ALTER INDEX sxi_index  
ON Tbl  
PAD_INDEX = ON;  

参照

選択的 XML インデックス (SXI)
選択的 XML インデックスの作成、変更、および削除
選択的 XML インデックスのパスと最適化ヒントの指定