共用方式為


ALTER INDEX (選擇性 XML 索引)

修改現有的選擇性 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 ] . | 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 索引)>。

    使用未包含 FOR 子句的 ALTER INDEX 時,只能指定 <index_options>。 當您使用 ALTER INDEX 加入或移除索引中的路徑時,索引選項不是有效的引數。

例如:PAD_INDEX = ON

備註

重要事項重要事項

當您執行 ALTER INDEX 陳述式時,一律會重建選擇性 XML 索引。 請務必考慮這個程序對於伺服器資源的影響。

限制事項

使用未包含 FOR 子句的 ALTER INDEX 時,只能指定 <index_options>。 當您使用 ALTER INDEX 加入或移除索引中的路徑時,索引選項不是有效的引數。

安全性

權限

需要有資料表或檢視的 ALTER 權限才能執行 ALTER INDEX。

範例

下列範例顯示 ALTER INDEX 陳述式。 此陳述式會將路徑 '/a/b/m' 加入至索引的 XQuery 部分,並且從<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

請參閱

概念

選擇性 XML 索引 (SXI)

建立、修改和卸除選擇性 XML 索引

指定選擇性 XML 索引的路徑和最佳化提示