既存の選択的 XML インデックスを変更します。 ALTER INDEX ステートメントは次のアイテムの 1 つ以上を変更します。
インデックス パスの一覧 (FOR 句)。
名前空間の一覧 (WITH XMLNAMESPACES 句)。
インデックス オプション (WITH 句)。
詳細については、次の各トピックを参照してください。
選択的セカンダリ XML インデックスを変更することはできません。 詳細については、「選択的セカンダリ XML インデックスの作成、変更、および削除」を参照してください。
構文
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
)
引数
ALTER 句
- index_name
変更する既存のインデックスの名前です。
例: ALTER INDEX sxi_index
ON 句
<table_object>
インデックスを作成する XML 列が含まれるテーブルを指定します。 次のどちらかの形式を使用します。database_name.schema_name.table_name
database_name..table_name
schema_name.table_name
table_name
例: ON Tbl
WITH XMLNAMESPACES 句
- <xmlnamespace_list>
インデックスを作成するパスで使用される名前空間の一覧を指定します。 WITH XMLNAMESPACES 句の構文については、「WITH XMLNAMESPACES (Transact-SQL)」を参照してください。
FOR 句
<promoted_node_path_action_list>
追加または削除するインデックス付きパスの一覧です。**パスを追加 (ADD) します。**パスを追加 (ADD) するときは、CREATE SELECTIVE XML INDEX ステートメントを使用してパスを作成するときと同じ構文を使用します。 CREATE または ALTER ステートメントで指定できるパスの詳細については、「選択的 XML インデックスのパスと最適化ヒントの指定」を参照してください。
**パスを削除 (REMOVE) します。**パスを削除 (REMOVE) するときは、作成時にパスに付けた名前を指定します。
例:
FOR
(
ADD pathm = '/a/b/m' as XQUERY 'node()' ,
REMOVE pathabe
)
インデックス オプション
<index_options>
インデックス オプションについては、「CREATE XML INDEX (選択的 XML インデックス)」を参照してください。<index_options> は、ALTER INDEX を FOR 句なしで使用する場合にのみ、指定することができます。 ALTER INDEX を使用してインデックスのパスを追加または削除する場合、インデックス オプションは引数として無効です。
例: PAD_INDEX = ON
解説
重要 |
|---|
ALTER INDEX ステートメントを実行すると、選択的 XML インデックスが常に再構築されます。 サーバーのリソースに対するこの処理の影響を考慮してください。 |
制限事項と制約事項
<index_options> は、ALTER INDEX を FOR 句なしで使用する場合にのみ、指定することができます。 ALTER INDEX を使用してインデックスのパスを追加または削除する場合、インデックス オプションは引数として無効です。
セキュリティ
権限
ALTER INDEX を実行するには、少なくともテーブルまたはビューに対する ALTER 権限が必要です。
使用例
ALTER INDEX ステートメントの例を次に示します。 このステートメントは、インデックスの XQuery の部分にパス '/a/b/m' を追加し、CREATE SELECTIVE XML INDEX のトピックの例で作成したインデックスの 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
重要