Eliminazione di indici XMLDrop XML Indexes

Per eliminare indici XML e non XML primari o secondari esistenti, è possibile usare l'istruzione DROP INDEX (Transact-SQL) Transact-SQLTransact-SQL.The DROP INDEX (Transact-SQL) Transact-SQLTransact-SQL statement can be used to drop existing primary or secondary XML and non-XML indexes. Tuttavia, nessuna opzione dell'istruzione DROP INDEX si applica agli indici XML.However, no options of DROP INDEX apply to XML indexes. Se si elimina l'indice XML primario, vengono eliminati anche gli indici secondari presenti.If you drop the primary XML index, any secondary indexes that are present are also deleted.

La sintassi di DROP con TableName.IndexName è obsoleta e non è supportata per gli indici XML.The DROP syntax with TableName.IndexName is being phased out and is not supported for XML indexes.

Esempio: creazione ed eliminazione di un indice XML primarioExample: Creating and Dropping a Primary XML Index

Nell'esempio seguente viene creato un indice XML in una colonna di tipo xml .In the following example, an XML index is created on an xml type column.

DROP TABLE T  
GO  
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  
-- Verify the index creation.   
-- Note index type is 3 for xml indexes.  
-- 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'   
-- Drop the index.  
DROP INDEX PIdx_T_XmlCol ON T  

Quando si elimina una tabella, vengono eliminati automaticamente anche tutti i relativi indici XML.When a table is dropped, all the XML indexes on it are also automatically dropped. Non è tuttavia possibile eliminare una colonna XML da una tabella se in tale colonna è incluso un indice XML.However, an XML column cannot be dropped from a table if an XML index exists on the column.

Nell'esempio seguente viene creato un indice XML in una colonna di tipo xml .In the following example, an XML index is created on an xml type column. Per altre informazioni, vedere Confrontare dati XML tipizzati con dati XML non tipizzati.For more information, see Compare Typed XML to Untyped XML.

CREATE TABLE TestTable(  
 Col1 int primary key,   
 Col2 xml (Production.ProductDescriptionSchemaCollection))   
GO  

A questo punto, è possibile creare un indice XML primario in Co12.Now, you can create a primary XML index on Co12.

CREATE PRIMARY XML INDEX PIdx_TestTable_Col2   
ON TestTable(Col2)  
GO  

Esempio: creazione di un indice XML tramite l'opzione DROP_EXISTINGExample: Creating an XML Index by Using the DROP_EXISTING Index Option

Nell'esempio seguente un indice XML viene creato in una colonna (XmlColx).In the following example, an XML index is created on a column (XmlColx). Successivamente, viene creato un altro indice XML con lo stesso nome in una colonna diversa, (XmlColy).Then, another XML index with the same name is created on a different column, (XmlColy). Poiché viene specificata l'opzione DROP_EXISTING , viene eliminato l'indice XML esistente in (XmlColx) ) e creato un nuovo indice XML in (XmlColy).Because the DROP_EXISTING option is specified, the existing XML index on (XmlColx) is dropped and a new XML index on (XmlColy) is created.

DROP TABLE T  
GO  
CREATE TABLE T(Col1 int primary key, XmlColx xml, XmlColy xml)  
GO  
-- Create XML index on XmlColx.  
CREATE PRIMARY XML INDEX PIdx_T_XmlCol   
ON T(XmlColx)  
GO  
-- Create same name XML index on XmlColy.  
CREATE PRIMARY XML INDEX PIdx_T_XmlCol   
ON T(XmlColy)   
WITH (DROP_EXISTING = ON)  
-- Verify the index is created on XmlColy.d.  
SELECT sc.name   
FROM   sys.xml_indexes si inner join sys.index_columns sic   
ON     sic.object_id=si.object_id and sic.index_id=si.index_id  
INNER  join sys.columns sc on sc.object_id=sic.object_id   
AND    sc.column_id=sic.column_id  
WHERE  si.name='PIdx_T_XmlCol'   
AND    si.object_id=object_id('T')  

Questa query restituisce il nome della colonna in cui viene creato l'indice XML specificato.This query returns the column name on which the specified XML index is created.

Vedere ancheSee Also

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