Summary: En este artículo, aprenderá a diagnosticar y reparar la corrupción crítica de bases de datos en SQL Server con las páginas GAM, SGAM e IAM. Conozca los errores más comunes, obtenga información sobre las estrategias de diagnóstico, reparación y prevención y soluciones como la recuperación de bases de datos o el software de reparación de terceros. También recibirá consejos sobre cómo prevenir futuros daños.
En SQL Server, una página es la unidad básica para almacenar datos y los extents son la unidad básica que ayuda a gestionar las páginas de forma eficiente. Un extent es una combinación de ocho páginas conectadas físicamente. En SQL Server, existen dos tipos de mapas de asignación que se utilizan para registrar la extensión de asignación: el Mapa de Asignación Global (GAM) y el Mapa de Asignación Global Compartido (SGAM). Existe otra página, el Mapa de Asignación de Índices (IAM), que registra las extensiones en la porción de 4 GB del archivo de base de datos SQL Server utilizada por una unidad de asignación. A veces, estas páginas de la base de datos SQL se corrompen por diversos motivos, lo que obliga a reparar la base de datos dañada. En este artículo, aprenderá a diagnosticar y reparar la corrupción de bases de datos SQL – problemas de páginas GAM, SGAM e IAM en SQL Server.
¿Qué son las páginas GAM, SGAM e IAM?
Las páginas de asignación global (GAM) se encargan de gestionar las extensiones de asignación dentro de la base de datos. Ayudan a identificar los extensiones libres en caso necesario.
Las páginas del Mapa de Asignación Compartida (SGAM) son como mapas granulares. Gestionan la asignación de extensiones a grupos de archivos específicos en la base de datos.
Las páginas de mapa de asignación de índices (IAM) son páginas internas especiales que funcionan como un registro para el almacenamiento de datos. Rastrean la ubicación de la página de datos en el archivo de base de datos.
¿Cómo se diagnostican los fallos de las páginas GAM, SGAM e IAM?
Si ejecuta consultas, puede recibir un mensaje de error similar a éste:
Msg 8905, nivel 16, estado 1, línea 1
La extensión (5678:1234) en la base de datos ID 10 está marcada como asignada en el GAM, pero ningún SGAM o IAM la ha asignado.
Este error indica que la página GAM está dañada.
Otra forma de reconocer errores en las páginas de la base de datos es utilizar el comando DBCC CHECKDB (véase el siguiente ejemplo).
DBCC CHECKDB (stellardb)
IR A
Existe un comando no documentado llamado dbcc PAGE. Se trata de un comando interno utilizado por Microsoft. Sin embargo, puede utilizarlo para diagnosticar las páginas de la base de datos. Aquí está el Código para utilizar este comando.
DBCC PAGE (stellardb, 1, 354, CON NOHEADER)
IR A
Aquí stellardb es el nombre de la base de datos, 1 es el número de archivo y 354 es el número de página.
¿Cómo solucionar una corrupción de las páginas GAM, SGAM e IAM en la base de datos SQL?
Aquí encontrará algunas soluciones para arreglar los errores de página GAM, SGAM e IAM, así como la corrupción de la base de datos SQL.
Restaurar base de datos desde copia de seguridad
Si dispone de una copia de seguridad, puede utilizarla para restaurar sus datos. Estos son los pasos para restaurar una copia de seguridad de una base de datos con SQL Server Management Studio (SSMS):
- En SQL Server Management Studio (SSMS), vaya al Explorador de objetos y haga clic con el botón derecho en Bases de datos.
- A continuación, seleccione la opción Restaurar base de datos.
- En la página General, seleccione Dispositivo y, a continuación, pulse el botón Examinar para seleccionar la copia de seguridad y pulse Aceptar.
Utilice el comando DBCC CHECKDB
Para reparar los fallos de página GAM, SGAM e IAM y la corrupción de la base de datos, puede utilizar el comando DBCC CHECKDB en SQL Server. Aquí está el Código para reparar la base de datos con el comando DBCC CHECKDB:
USE master;
VEA
ALTERAR BASE DE DATOS Stellar
SET USUARIO_ÚNICO
CON RETROCESO INMEDIATO;
VEA
DBCC CHECKDB('Stellar',REPAIR_REBUILD)
VEA
ALTERAR BASE DE DATOS Stellar
ESTABLECER MULTI_USUARIO;
VEA
El Código anterior va a la base de datos del sistema maestro, pone la base de datos en modo monousuario, repara la base de datos y la vuelve a poner en modo multiusuario.
Utilice un software de reparación de bases de datos SQL de terceros
Si el comando DBCC CHECKDB no puede reparar la base de datos, puede utilizar un software de reparación de SQL de terceros, por ejemplo, Stellar Repair for MS SQL. Este software puede reparar archivos de bases de datos SQL Server (mdf y ndf) de forma sencilla. Puede recuperar todos los datos de los archivos de base de datos dañados y guardarlos en un nuevo archivo de base de datos o en varios otros formatos.
Para reparar la base de datos con Stellar Repair for MS SQL, proceda como se indica a continuación:
Nota: Desconecte la base de datos antes de iniciar el proceso de reparación.
- Descargue el software de la página web oficial.
- Instale el software e inícielo.
- Haga clic en Examinar para seleccionar el archivo de base de datos (puede utilizar el botón Buscar si no sabe dónde está almacenado el archivo de datos).
- Una vez seleccionado el archivo, pulse el botón Reparar.
- Una vez reparados los datos, puede guardarlos en una nueva base de datos o en otros formatos como CSV, HTML y Excel.
Mejores prácticas para evitar la corrupción de los sitios GAM, SGAM e IAM
Estos son algunos consejos útiles que puede seguir para evitar daños en las páginas de la base de datos de SQL Server:
- Compruebe el hardware, especialmente los discos duros, para asegurarse de que funcionan correctamente. Sustituya los discos duros si son viejos o presentan errores. Si es posible, cree un RAID espejo para sus datos de SQL Server.
- Evite los virus y los ataques de malware. Asegúrese de instalar programas antivirus y antispam.
- Proteja su red con los mejores cortafuegos y segmentación de red y cifre sus datos. Cree redes VPN seguras si es necesario.
- Asegúrese de actualizar su sistema operativo y software con las últimas actualizaciones.
Conclusión
Si las páginas GAM, SGAM o IAM de la base de datos están dañadas, lo más fácil es restaurar la base de datos a partir de la última copia de seguridad. Si la copia de seguridad está obsoleta o no funciona, puede intentar reparar la base de datos con el comando DBCC CHECKDB. En algunas situaciones, el comando DBCC CHECKDB no funcionará. En este caso, puede utilizar Stellar Repair for MS SQL. Este software puede reparar fácilmente la base de datos dañada y restaurar todos los objetos con total integridad.