Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Se aplica a: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de datos de Azure SQL de Microsoft Fabric
En este artículo, se explica cómo crear, recompliar o depositar índices en línea en SQL Server mediante SQL Server Management Studio o Transact-SQL. Gracias a la opción ONLINE
, es posible que usuarios simultáneos obtengan acceso a los datos de la tabla subyacente o del índice clúster, así como a los índices no clúster asociados durante estas operaciones de índices. Por ejemplo, cuando un usuario vuelve a generar un índice clúster, dicho usuario y los demás pueden seguir actualizando los datos subyacentes y realizando consultas sobre los mismos.
Al realizar operaciones DDL (lenguaje de definición de datos) sin conexión, como generar o volver a generar un índice clúster, estas operaciones mantienen bloqueos exclusivos (X) de los datos subyacentes y los índices asociados. Es un modo de evitar modificaciones de los datos subyacentes y consultas sobre los mismos hasta que no finalice la operación de índice.
Nota
Los comandos de recompilación de índices pueden contener bloqueos exclusivos en índices agrupados después de quitar una columna de objeto grande de una tabla, incluso cuando se realiza en línea.
Las operaciones de índices en línea no están disponibles en todas las ediciones de SQL Server. Para obtener más información, consulte Ediciones y características admitidas de SQL Server 2022.
Las operaciones de índice en línea están disponibles en Azure SQL Database y Azure SQL Managed Instance.
Se recomienda realizar operaciones de índices en línea en entornos empresariales que funcionan 24 horas al día, siete días a la semana, y en los que resulta fundamental la actividad simultánea de los usuarios durante las operaciones de índices.
La opción ONLINE
está disponible en las siguientes instrucciones de Transact-SQL.
UNIQUE
o PRIMARY KEY
con la opción de índice CLUSTERED
)Para conocer más limitaciones y restricciones relacionadas con la creación, nueva generación o eliminación de índices en línea, vea Directrices para operaciones de índices en línea.
Debe tener un permiso de ALTER
sobre la tabla o vista.
En el Explorador de objetos, seleccione el signo más para expandir la base de datos que contiene la tabla en la que desea volver a generar un índice en línea.
Expanda la carpeta Tablas .
Seleccione el signo más para expandir la tabla en la que desea volver a generar un índice en línea.
Expanda la carpeta Índices .
Haga clic con el botón derecho en el índice que quiere volver a generar en línea y seleccione Propiedades.
Debajo de Seleccionar una página, seleccione Opciones.
Seleccione Permitir procesamiento DML en líneay, a continuación, seleccione True en la lista.
Seleccione Aceptar.
Haga clic con el botón derecho en el índice que quiere volver a generar en línea y seleccione Volver a generar.
En el cuadro de diálogo Volver a generar índices, compruebe que el índice correcto se encuentra en la cuadrícula Índices que se volverán a generar y seleccione Aceptar.
En el ejemplo siguiente se recompila un índice en línea existente en la base de datos de AdventureWorks.
ALTER INDEX AK_Employee_NationalIDNumber
ON HumanResources.Employee
REBUILD WITH (ONLINE = ON);
En el ejemplo siguiente se elimina un índice clúster en línea y se mueve la tabla resultante (montón) al grupo de archivos NewGroup
mediante la cláusula MOVE TO
. Las vistas de catálogo sys.indexes
, sys.tables
y sys.filegroups
se consultan para comprobar la ubicación del índice y la tabla en los grupos de archivos antes y después del desplazamiento.
-- Create a clustered index on the PRIMARY filegroup if the index does not exist.
IF NOT EXISTS (SELECT name FROM sys.indexes WHERE name =
N'AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate')
CREATE UNIQUE CLUSTERED INDEX
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials (ProductAssemblyID, ComponentID,
StartDate)
ON 'PRIMARY';
GO
-- Verify filegroup location of the clustered index.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U')
GO
-- Create filegroup NewGroup if it does not exist.
IF NOT EXISTS (SELECT name FROM sys.filegroups
WHERE name = N'NewGroup')
BEGIN
ALTER DATABASE AdventureWorks2022
ADD FILEGROUP NewGroup;
ALTER DATABASE AdventureWorks2022
ADD FILE (NAME = File1,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\File1.ndf')
TO FILEGROUP NewGroup;
END
GO
-- Verify new filegroup
SELECT * from sys.filegroups;
GO
-- Drop the clustered index and move the BillOfMaterials table to
-- the Newgroup filegroup.
-- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition.
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials
WITH (ONLINE = ON, MOVE TO NewGroup);
GO
-- Verify filegroup location of the moved table.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U');
Para más información, vea ALTER INDEX (Transact-SQL).
Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyCursos
Módulo
Diseño de un modelo de datos eficaz en Azure SQL Database con Azure Data Studio - Training
Aprenda a crear un modelo de datos, tablas, índices y restricciones y a usar tipos de datos con Azure Data Studio.
Certificación
Microsoft Certified: Azure Database Administrator Associate - Certifications
Administre una infraestructura de base de datos de SQL Server para bases de datos relacionales locales e híbridas en la nube mediante las ofertas de bases de datos relacionales PaaS de Microsoft.
Documentación
Directrices para las operaciones de índices en línea - SQL Server
Directrices para operaciones de índices en línea.
ALTER INDEX (Transact-SQL) - SQL Server
Modifica un índice existente de una tabla o una vista (almacén de filas, almacén de columnas o XML) mediante su deshabilitación, regeneración o reorganización, o mediante el establecimiento de sus opciones.
Cómo funcionan las operaciones de índice en línea - SQL Server
Cómo funcionan las operaciones de índice en línea