Realizar restauraciones de páginas
Este tema solo es relevante para las bases de datos de SQL Server que usan el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros. La restauración de páginas sólo se admite para grupos de archivos de lectura/escritura.
El objetivo de una restauración de páginas es restaurar una o varias páginas dañadas sin restaurar la base de datos completa. Normalmente, las páginas candidatas para la restauración se han marcado como "sospechosas" debido a un error al tener acceso a la página. Las páginas sospechosas se identifican en la tabla suspect_pages de la base de datos msdb.
[!NOTA]
No todos los errores de página requieren una restauración. Puede producirse un problema en los datos en caché, como por ejemplo un índice secundario, que se puede resolver recalculando los datos. Por ejemplo, si el administrador de la base de datos quita un índice secundario y lo vuelve a generar, los datos dañados, aunque se corrijan, no se indican como tales en la tabla suspect_pages.
Varias páginas de bases de datos se pueden restaurar de inmediato. Las copias de seguridad de archivos de registros se aplican a todos los archivos de base de datos que contienen una página que se va a recuperar. Al igual que en una restauración de archivo, el conjunto de puestas al día se avanza con un solo pase de puesta al día de registro.
La restauración de páginas se ha diseñado para reparar páginas aisladas que se han dañado. La restauración y recuperación de una pequeña cantidad de páginas es más rápida que la restauración de un archivo, ya que reduce la cantidad de datos sin conexión durante la operación de restauración. Sin embargo, si debe restaurar una cantidad mayor de páginas de un archivo, la restauración del archivo completo suele ser más efectiva. Por ejemplo, la presencia de un gran número de páginas dañadas en un dispositivo puede indicar un error de dispositivo pendiente. Pruebe a restaurar el archivo, posiblemente en otra ubicación, y repare el dispositivo.
Escenarios de restauración de páginas
Todas las ediciones de SQL Server 2005 y las versiones posteriores admiten la restauración de páginas cuando la base de datos está sin conexión (restauración de páginas sin conexión). En SQL Server 2005 Enterprise Edition y versiones posteriores, si la base de datos está en línea durante una restauración de páginas, permanecerá en línea. El proceso de restaurar y recuperar una página mientras la base de datos está en línea se denomina restauración de páginas en línea.
Los escenarios de restauración de páginas son los siguientes:
Restauración de páginas sin conexión
SQL Server 2005 Standard, SQL Server 2005 Express Edition y SQL Server 2005 Workgroup, y las versiones posteriores, admiten únicamente restauraciones sin conexión. SQL Server 2005 Enterprise Edition y las versiones posteriores usan restauraciones sin conexión si la base de datos ya está sin conexión. En una restauración de páginas sin conexión, la base de datos está en modo sin conexión mientras se restauran las páginas dañadas. Al final de la secuencia de restauración, la base de datos pasará a estar en línea.
Para que la restauración de páginas se lleve a cabo correctamente, las páginas restauradas deben recuperarse a un estado coherente con la base de datos. Debe aplicarse una cadena ininterrumpida de copias de seguridad de registros a la última recuperación completa o diferencial para actualizar el grupo de archivos que incluye la página al archivo de registro actual.
Restauración de páginas en línea
En SQL Server 2005 Enterprise Edition y versiones posteriores, si las condiciones lo permiten, las restauraciones de páginas se realizan automáticamente en línea. En la mayoría de los casos, la restauración de una página dañada se realiza mientras la base de datos, incluido el grupo de archivos para el que la página se restaura, permanece en línea. La restauración de páginas en línea resulta especialmente útil para las páginas dañadas por un error de hardware.
A veces, será necesario utilizar una restauración sin conexión para algunas páginas dañadas. Por ejemplo, cuando los daños en ciertas páginas críticas pueden evitar que se inicie la base de datos. En estos casos, deberá realizar una restauración sin conexión.
[!NOTA]
Una restauración en línea intenta actualizar los metadatos y esa actualización puede generar un error si interviene una página crítica. Si un intento de restauración en línea genera un error, la restauración se debe realizar sin conexión.
La restauración de páginas utiliza el mecanismo mejorado de creación de informes y seguimiento de errores de página (incluidas las sumas de comprobación de página) en SQL Server 2005 y versiones posteriores. Las páginas que las sumas de comprobación o escrituras incompletas han detectado como dañadas, páginas dañadas, se pueden restaurar si se especifican en una instrucción RESTORE. La restauración de páginas se utiliza para restaurar únicamente algunas páginas dañadas. Cualquier página que se especifique en una instrucción RESTORE se sustituirá por una página del conjunto de copia de seguridad especificado. Las páginas restauradas se deben recuperar en un estado coherente con la base de datos. Sólo se restauran las páginas que se especifican de forma explícita.
Limitaciones de la restauración de páginas
Sólo se pueden restaurar las páginas de bases de datos. La restauración de páginas no se puede utilizar para restaurar los elementos siguientes:
Registro de transacciones
Páginas de asignación: páginas del mapa de asignación global (GAM), páginas del mapa de asignación global compartido (SGAM) y páginas de espacio disponible en páginas (PFS). Para obtener más información, vea Administrar las asignaciones de extensiones y el espacio disponible.
Página 0 de todos los archivos de datos (la página de inicio del archivo)
Página 1:9 (la página de inicio de la base de datos)
Catálogo de texto
Si no se puede restaurar una página concreta, debe utilizar la copia de seguridad completa existente de base de datos o la copia de seguridad completa de archivo o de grupo de archivos.
[!NOTA]
Si la página que se va a restaurar es un caso especial, por ejemplo, una página de metadatos, la restauración de páginas en línea generará un error. En estos casos, intente realizar una restauración de páginas sin conexión.
Requisitos para restaurar páginas
Una restauración de páginas está sujeta a los requisitos siguientes:
Las bases de datos deben utilizar el modelo de recuperación completa u optimizado para cargas masivas de registros. Surgirán algunos problemas si se utiliza el modelo de recuperación por medio de registros de operaciones masivas. Para obtener más información, vea la siguiente sección:
No se pueden restaurar las páginas de grupos de archivos de sólo lectura. Si intenta convertir un grupo de archivos en grupo de sólo lectura, se producirá un error si se está realizando una restauración de páginas simultáneamente en el grupo de archivos.
La secuencia de restauración debe comenzar con una copia de seguridad completa, de archivo o de grupo de archivos.
Una restauración de páginas requiere una cadena continua de copias de seguridad de registros hasta el archivo de registro actual, y se deben aplicar todas de modo que se actualice la página con el archivo de registro actual.
Al igual que en una secuencia de restauración de archivos, en cada paso de restauración se pueden agregar nuevas páginas al conjunto de puestas al día.
No se puede ejecutar al mismo tiempo una copia de seguridad de la base de datos y una restauración de páginas.
Modelo de recuperación optimizado para cargas masivas de registros y restauración de páginas
Para una base de datos que utiliza el modelo de recuperación optimizado para cargas masivas de registros, la restauración de páginas cuenta con las condiciones adicionales siguientes:
La realización de copias de seguridad mientras un grupo de archivos o los datos de una página están en modo sin conexión resulta problemática para los datos de registros de operaciones masivas, ya que los datos sin conexión no se encuentran en el registro. La presencia de una página sin conexión puede evitar la realización de una copia de seguridad del registro. En estos casos, intente utilizar DBCC REPAIR, de esta forma la pérdida de datos puede ser menor que si restaura la copia de seguridad más reciente.
Si una copia de seguridad de registros de una base de datos por medio de registros de operaciones masivas detecta una página dañada, se producirá un error a menos que se especifique WITH CONTINUE_AFTER_ERROR.
La restauración de páginas no suele funcionar con la recuperación por medio de registros de operaciones masivas.
La recomendación para llevar a cabo la restauración de páginas es establecer la base de datos en el modelo de recuperación completa e intentar realizar una copia de seguridad de registros. Si la copia de seguridad de registros funciona, puede pasar a realizar la restauración de páginas. Si la copia de seguridad de registros no se realiza correctamente, perderá el trabajo realizado desde la copia de seguridad de registros anterior o tendrá que intentar ejecutar DBCC con la opción REPAIR_ALLOW_DATA_LOSS.
Sintaxis básica de restauración de páginas
Para especificar una página en una instrucción RESTORE DATABASE, necesita el Id. de archivo del archivo que contiene la página y el Id. de la página. La sintaxis necesaria es la siguiente:
RESTORE DATABASE database_name
PAGE ='file:page [ ,...n ]' [ ,...n ]
FROM <backup_device> [ ,...n ]
WITH NORECOVERY
Para obtener más información acerca de los parámetros de la opción PAGE, vea RESTORE (argumentos, Transact-SQL). Para obtener más información acerca de la sintaxis de RESTORE DATABASE, vea RESTORE (Transact-SQL).
Procedimiento para una restauración de páginas
Los pasos básicos para una restauración de páginas son los siguientes:
Obtener los Id. de las páginas dañadas que se deben restaurar. Un error de suma de comprobación o escritura incompleta devuelve el Id. de página con la información necesaria para especificar las páginas. Para buscar el Id. de una página dañada, utilice cualquiera de los siguientes orígenes.
Origen de Id. de página
Tema
msdb..suspect_pages
Registro de errores
Trazas de eventos
DBCC
Proveedor WMI
Iniciar una restauración de páginas con una copia de seguridad completa de base de datos, de archivo o de grupo de archivos que contenga la página. En la instrucción RESTORE DATABASE, utilice la cláusula PAGE para obtener los Id. de todas las páginas que se deben restaurar.
PAGE ='file:page [ ,...n ]' [ ,...n ]'
Aplicar las copias de seguridad diferenciales más recientes.
Aplicar las copias de seguridad de registros posteriores.
Crear una nueva copia de seguridad de registros de la base de datos que incluya el LSN final de las páginas restauradas; es decir, el punto en que la última página restaurada ha pasado a estar en modo sin conexión. El LSN final, que se establece como parte de la primera restauración de la secuencia, es el LSN final de puesta al día. La puesta al día en línea del archivo que contiene la página puede detenerse en el LSN final de puesta al día. Para conocer el LSN final de puesta al día de un archivo, vea la columna redo_target_lsn de sys.master_files. Para obtener más información, vea sys.master_files (Transact-SQL).
Restaurar la copia de seguridad de registros nueva. Después de aplicar esta nueva copia de seguridad de registros, la restauración de páginas finaliza y las páginas están listas para su uso.
[!NOTA]
Esta secuencia es análoga a una secuencia de restauración de archivos. De hecho, tanto la restauración de páginas como la de archivos puede realizarse como parte de la misma secuencia.
Ejemplo
En el siguiente ejemplo se restauran cuatro páginas dañadas del archivo B con NORECOVERY. A continuación, se aplican dos copias de seguridad de registros con NORECOVERY y, después, la copia del final del registro, recuperada con RECOVERY.
Importante |
---|
Si las páginas dañadas almacenan metadatos importantes de la base de datos, puede ser necesaria una secuencia de restauración de páginas sin conexión. Para realizar una restauración sin conexión, debe realizar una copia de seguridad del registro de transacciones con WITH NORECOVERY. |
En el siguiente ejemplo se realiza una restauración en línea. En el ejemplo, el Id. del archivo B es 1 y los Id. de las páginas dañadas son 57, 202, 916 y 1016.
RESTORE DATABASE <database> PAGE='1:57, 1:202, 1:916, 1:1016'
FROM <file_backup_of_file_B>
WITH NORECOVERY;
RESTORE LOG <database> FROM <log_backup>
WITH NORECOVERY;
RESTORE LOG <database> FROM <log_backup>
WITH NORECOVERY;
BACKUP LOG <database> TO <new_log_backup>
RESTORE LOG <database> FROM <new_log_backup> WITH RECOVERY;
GO