Modifica di indici XMLModify XML Indexes

È possibile usare l’istruzione DDL di ALTER INDEX (Transact-SQL) Transact-SQLTransact-SQL per modificare gli indici XML e non XML esistenti.The ALTER INDEX (Transact-SQL) Transact-SQLTransact-SQL DDL statement can be used to modify existing XML and non-XML indexes. Per gli indici XML, tuttavia, non sono disponibili tutte le opzioni ALTER INDEX.However, not all the ALTER INDEX options are available to XML indexes. Per la modifica degli indici XML non sono valide le opzioni seguenti:The following options are not valid when modifying XML indexes:

  • Per gli indici XML non è valida l'opzione di ricompilazione e impostazione IGNORE_DUP_KEY.The rebuild and set option IGNORE_DUP_KEY is not valid for XML indexes. Per gli indici XML secondari è necessario impostare l'opzione di ricompilazione ONLINE su OFF.The rebuild option ONLINE must be set to OFF for secondary XML indexes. Nell'istruzione ALTER INDEX non è consentita l'opzione DROP_EXISTING.The option DROP_EXISTING is not permitted in the ALTER INDEX statement.

  • Le modifiche al vincolo di chiave primaria nella tabella utente non vengono automaticamente propagate agli indici XML.The modifications of the primary key constraint in the user table are not automatically propagated to XML indexes. L'utente deve prima eliminare gli indici XML e quindi ricrearli.The user must drop the XML indexes first and then re-create them.

  • Se viene specificata l'opzione ALTER INDEX ALL, questa viene applicata agli indici sia XML che non XML.If ALTER INDEX ALL is specified, it applies to both non-XML and XML indexes. È possibile che vengano specificate opzioni di indicizzazione che non sono valide per entrambi i tipi di indici.Indexing options may be specified that are not valid for both types of indexes. In tal caso, l'intera istruzione ha esito negativo.In this case, the whole statement fails.

Esempio: modifica di un indice XMLExample: Modifying an XML Index

Nell'esempio seguente viene creato, e quindi modificato, un indice XML impostando l'opzione ALLOW_ROW_LOCKS su OFF.In the following example, an XML index is created and then modified by setting the option ALLOW_ROW_LOCKS to OFF. Quando l'opzione ALLOW_ROW_LOCKS è impostata su OFF, le righe non sono bloccate ed è possibile ottenere l'accesso agli indici specificati tramite blocchi a livello di pagina e di tabella.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)  

Esempio: disabilitazione e attivazione di un indice XMLExample: Disabling and Enabling an XML Index

Per impostazione predefinita, viene attivato un indice XML.By default, an XML index is enabled. Se si disabilita un indice XML, per le query in esecuzione sulla colonna XML non viene utilizzato l'indice XML.If an XML index is disabled, the queries running against the XML column do not use the XML index. Per abilitare un indice XML, utilizzare ALTER INDEX con l'opzione REBUILD .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  

Vedere ancheSee Also

Indici XML (SQL Server)XML Indexes (SQL Server)