Modificar índices XMLModify XML Indexes

ESTE TEMA SE APLICA A:síSQL Server (a partir de 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noAlmacenamiento de datos paralelos THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

La instrucción DDL ALTER INDEX (Transact-SQL) de Transact-SQLTransact-SQL se puede usar para modificar índices XML y no XML existentes.The ALTER INDEX (Transact-SQL) Transact-SQLTransact-SQL DDL statement can be used to modify existing XML and non-XML indexes. No obstante, no todas las opciones ALTER INDEX están disponibles para índices XML.However, not all the ALTER INDEX options are available to XML indexes. Las siguientes opciones no son válidas al modificar índices XML:The following options are not valid when modifying XML indexes:

  • La opción de reconstrucción y configuración IGNORE_DUP_KEY no es válida para índices XML.The rebuild and set option IGNORE_DUP_KEY is not valid for XML indexes. La opción de reconstrucción ONLINE debe establecerse en OFF para los índices XML secundarios.The rebuild option ONLINE must be set to OFF for secondary XML indexes. La opción DROP_EXISTING no se admite en la instrucción ALTER INDEX.The option DROP_EXISTING is not permitted in the ALTER INDEX statement.

  • Las modificaciones de la restricción de clave principal en la tabla de usuario no se propagan automáticamente a los índices XML.The modifications of the primary key constraint in the user table are not automatically propagated to XML indexes. El usuario debe quitar los índices XML primero y volver a crearlos después.The user must drop the XML indexes first and then re-create them.

  • Cuando se especifica ALTER INDEX ALL, se aplica tanto a los índices XML como a los que no lo son.If ALTER INDEX ALL is specified, it applies to both non-XML and XML indexes. Se pueden especificar opciones de indización que no sean válidas para ambos tipos de índices.Indexing options may be specified that are not valid for both types of indexes. En este caso, la instrucción producirá un error.In this case, the whole statement fails.

Ejemplo: Modificar un índice XMLExample: Modifying an XML Index

En el ejemplo siguiente se muestra cómo crear un índice XML y, a continuación, modificarlo estableciendo la opción ALLOW_ROW_LOCKS en OFF.In the following example, an XML index is created and then modified by setting the option ALLOW_ROW_LOCKS to OFF. Cuando ALLOW_ROW_LOCKS se ha establecido en OFF, las filas no se bloquean y el acceso a los índices especificados se obtiene usando los bloqueos de página y de tabla.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)  

Ejemplo: Deshabilitar y habilitar un índice XMLExample: Disabling and Enabling an XML Index

Un índice XML está habilitado de forma predeterminada.By default, an XML index is enabled. Si un índice XML se deshabilita, las consultas que se realicen en la columna XML no usarán el índice XML.If an XML index is disabled, the queries running against the XML column do not use the XML index. Para habilitar un índice XML, use ALTER INDEX con la opción 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  

Ver tambiénSee Also

Índices XML (SQL Server)XML Indexes (SQL Server)