Ändern von XML-IndizesModify XML Indexes

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Die ALTER INDEX (Transact-SQL) Transact-SQLTransact-SQL-DDL-Anweisung kann zum Ändern vorhandener XML-Indizes und Nicht-XML-Indizes verwendet werden.The ALTER INDEX (Transact-SQL) Transact-SQLTransact-SQL DDL statement can be used to modify existing XML and non-XML indexes. Nicht alle ALTER INDEX-Optionen sind jedoch für XML-Indizes verfügbar.However, not all the ALTER INDEX options are available to XML indexes. Die folgenden Optionen sind beim Ändern von XML-Indizes nicht zulässig:The following options are not valid when modifying XML indexes:

  • Die REBUILD- und SET-Option IGNORE_DUP_KEY ist für XML-Indizes nicht zulässig.The rebuild and set option IGNORE_DUP_KEY is not valid for XML indexes. Die REBUILD-Option ONLINE muss für sekundäre XML-Indizes auf OFF festgelegt werden.The rebuild option ONLINE must be set to OFF for secondary XML indexes. Die Option DROP_EXISTING ist in der ALTER INDEX-Anweisung nicht zulässig.The option DROP_EXISTING is not permitted in the ALTER INDEX statement.

  • Die Änderungen der primary key-Einschränkung in der user-Tabelle werden nicht automatisch an XML-Indizes weitergegeben.The modifications of the primary key constraint in the user table are not automatically propagated to XML indexes. Der Benutzer muss die XML-Indizes zuerst löschen und dann neu erstellen.The user must drop the XML indexes first and then re-create them.

  • Wenn ALTER INDEX ALL angegeben wird, gilt dies für Nicht-XML- und XML-Indizes.If ALTER INDEX ALL is specified, it applies to both non-XML and XML indexes. Möglicherweise werden Indizierungsoptionen angegeben, die nicht für beide Indextypen zulässig sind.Indexing options may be specified that are not valid for both types of indexes. In diesem Fall schlägt die gesamte Anweisung fehl.In this case, the whole statement fails.

Beispiel: Ändern eines XML-IndexExample: Modifying an XML Index

Im folgenden Beispiel wird ein XML-Index erstellt und dann durch Festlegen der Option ALLOW_ROW_LOCKS auf OFFgeändert.In the following example, an XML index is created and then modified by setting the option ALLOW_ROW_LOCKS to OFF. Wenn ALLOW_ROW_LOCKS auf OFFfestgelegt wurde, sind die Zeilen gesperrt, und der Zugriff auf die angegebenen Indizes erfolgt über die Sperren auf Seiten- und Tabellenebene.When ALLOW_ROW_LOCKS is OFF, rows are not locked and access to the specified indexes is obtained by using page-and table-level locks.

CREATE TABLE T (Col1 INT PRIMARY KEY, XmlCol XML)  
GO  
-- Create primary XML index.   
CREATE PRIMARY XML INDEX PIdx_T_XmlCol   
ON T(XmlCol)  
GO  
-- Note the type 3 is index on XML type.  
SELECT *  
FROM sys.xml_indexes  
WHERE object_id = object_id('T')  
AND name='PIdx_T_XmlCol'  

-- Modify and set an index option.  
ALTER INDEX PIdx_T_XmlCol on T   
SET (ALLOW_ROW_LOCKS = OFF)  

Beispiel: Deaktivieren und Aktivieren eines XML-IndexExample: Disabling and Enabling an XML Index

Standardmäßig ist ein XML-Index aktiviert.By default, an XML index is enabled. Wenn ein XML-Index deaktiviert ist, verwenden die Abfragen, die für eine XML-Spalte ausgeführt werden, den XML-Index nicht.If an XML index is disabled, the queries running against the XML column do not use the XML index. Verwenden Sie ALTER INDEX mit der Option REBUILD , um einen XML-Index zu aktivieren.To enable an XML index, use ALTER INDEX with the REBUILD option.

CREATE TABLE T (Col1 INT PRIMARY KEY, XmlCol XML)  
GO  
CREATE PRIMARY XML INDEX PIdx_T_XmlCol ON T(XmlCol)  
GO  
ALTER INDEX PIdx_T_XmlCol on T DISABLE  
Go  
-- Verify index is disabled.  
SELECT *  
FROM sys.xml_indexes  
WHERE object_id = object_id('T')  
AND name='PIdx_T_XmlCol'  
-- Rebuild the index.  
ALTER INDEX PIdx_T_XmlCol on T REBUILD  
Go  

Weitere Informationen finden Sie unterSee Also

XML-Indizes (SQL Server)XML Indexes (SQL Server)