Este artículo comparte la importancia de los índices en una base de datos SQL. Además, proporciona una breve descripción general de los índices agrupados y no agrupados. Además, el artículo analiza los motivos de la corrupción del índice de SQL Server, los factores para identificar cualquier índice dañado y los métodos para solucionarlo.
Los índices en SQL Server ayudan a acelerar el proceso de recuperación de filas de una tabla o vista. Sin embargo, la elección correcta de los índices es crucial para mejorar el rendimiento de las consultas. SQL Server admite índices agrupados y no agrupados. La corrupción en cualquiera de estos índices puede provocar un retraso en la obtención de filas. Además, puede obtener valores diferentes o eliminados al recuperar algunas filas. Además, las consultas de mayor duración pueden volverse defectuosas debido a índices dañados en las tablas.
Cualquiera que sea la situación, debe reparar la corrupción en los índices a su debido tiempo para evitar que el flujo de trabajo de la base de datos de SQL Server se vea afectado.
Antes de discutir los métodos para solucionar problemas de corrupción de índices, repasemos brevemente los índices agrupados y no agrupados.
Descripción general de los índices agrupados y no agrupados
La aplicación de una restricción de clave principal en una columna dentro de una tabla crea un índice agrupado en la columna. Un índice agrupado ordena los datos físicamente y los almacena en una tabla según su clave de índice definida. Dado que podemos clasificar los datos en un solo orden, no es posible tener más de un índice agrupado.
Sin embargo, un índice no agrupado ordena y almacena los datos por separado de las filas de una tabla. Esencialmente, es una copia de las columnas de datos de la tabla que tienen enlaces a la tabla asociada. A diferencia de los índices agrupados, puede tener uno o más índices no agrupados.
¿Qué causa la corrupción del índice de SQL Server?
Los índices pueden fragmentarse mucho con el tiempo (debido a operaciones de inserción, actualización o eliminación masivas) y requieren un mantenimiento periódico. Los índices fragmentados pueden provocar un rendimiento deficiente de las consultas y pueden corromperse. Además, factores como la actualización de la versión de SQL Server, un error en el programa SQL, el apagado repentino del sistema, etc. pueden provocar la corrupción del índice de SQL Server. En particular, ejecutar una 'instrucción UPDATE compleja con sugerencia NOLOCK' en la tabla puede causar daños en el índice no agrupado.
Antes de analizar los métodos para reparar la corrupción en los índices de SQL Server, veamos cómo identificar los índices dañados.
¿Cómo identificar la corrupción en el índice de SQL Server?
Puede determinar si un índice está dañado usando los siguientes métodos:
- Recupere filas que tengan valores diferentes o eliminados y luego ejecute un comando 'ROWID' para identificar las entradas faltantes. También puede rastrear las entradas que faltan consultando el registro de errores de SQL.
- Ejecutar DBCC CHECKDB generará el siguiente mensaje de error si tiene un índice no agrupado dañado.
Mensaje 2511, Nivel 16, Estado 1, Línea 31
Error de tabla:ID de objeto 613577224, ID de índice 2, ID de partición 72057594041401344,
ID de unidad de asignación 72057594047037440 (escriba datos IN-row).
Teclas desordenadas en la página (1:264), ranuras 2 y 3.
- Si tiene un índice agrupado, es posible que reciba el siguiente mensaje de error:
Servidor:Mensaje 1902, Nivel 16, Estado 3, Línea 1
No se puede crear más de un índice agrupado en la tabla 'Nombre de la tabla'. Suelte el índice agrupado existente 'Nombre del índice agrupado' antes de crear otro.
¿Cómo reparar la corrupción del índice de SQL Server?
Siga estos métodos gratuitos que puede usar para reparar la corrupción del índice de SQL Server:
Método 1:restaurar desde la copia de seguridad
Ya sea que sospeche corrupción en un índice agrupado o no agrupado, use la copia de seguridad para restaurar los datos afectados antes de que se produzca la corrupción.
Sin embargo, la restauración desde la copia de seguridad no funcionará si a la copia de seguridad le faltan las últimas actualizaciones. Incluso puede conducir a la pérdida de datos. En ese caso, prueba el siguiente método.
Método 2:quitar y volver a crear el índice corrupto
Descarte todo el índice o el índice específico que muestre corrupción siguiendo estos pasos:
- Conéctese a una instancia de servidor en SQL Server Management Studio (SSMS) .
- En el "Explorador de objetos" ventana, expanda la base de datos que contiene la tabla con el índice dañado.
- Haga clic con el botón derecho en la tabla, seleccione 'Guion de tabla como' opción, coloque el cursor sobre 'SOLTAR Y CREAR en' y haga clic en Nuevo editor de consultas
Si no puede volver a crear los índices dañados, puede intentar reparar los índices.
Método 3:reparar la base de datos SQL
Como último recurso, ejecute el comando DBCC CHECKDB con 'REPAIR_ALLOW_DATA_LOSS' para la base de datos que tiene un índice dañado (agrupado o no agrupado) en una tabla. Pero esto puede resultar en la pérdida de datos. Como solución alternativa, intente usar una herramienta de reparación de SQL como Stellar Repair para MS SQL. La herramienta ayuda a reparar archivos de bases de datos (.mdf y .ndf) y restaura índices, vistas, procedimientos almacenados y todos los demás componentes. Puede importar los índices restaurados y otros objetos de la base de datos directamente a una base de datos activa o nueva.
Descargue la versión de demostración del software de reparación de bases de datos SQL para obtener una vista previa de los índices recuperables antes de guardar el archivo reparado.
Conclusión
Si sospecha que un índice está dañado, use los factores descritos en el artículo para determinar si el índice está dañado o no. Además, consulte las posibles razones detrás de la corrupción del índice de SQL Server y los métodos para reparar la corrupción. Los métodos incluyen la restauración de la base de datos desde la copia de seguridad, la eliminación y la recreación de los índices, y la reparación de la base de datos y la restauración de todos sus componentes. También puede considerar el uso de una herramienta de reparación de SQL para corregir los índices SQL agrupados y no agrupados corruptos y recuperar objetos de base de datos inaccesibles.