Detectar y copiar con errores de medios durante las copias de seguridad y restauración

Microsoft SQL Server 2005 y las versiones posteriores proporcionan la opción de recuperar una base de datos a pesar de los errores detectados. Un importante mecanismo de detección de errores nuevo es la creación opcional de una suma de comprobación de copia de seguridad que se puede crear mediante una operación de copia de seguridad y validar mediante una operación de restauración. Puede controlar si una operación comprueba si hay errores y si la operación se detiene o continúa al encontrar un error. Si una copia de seguridad contiene una suma de comprobación de copia de seguridad, las instrucciones RESTORE y RESTORE VERIFYONLY pueden comprobar si hay errores.

Nota

Las copias de seguridad reflejadas proporcionan hasta cuatro copias (reflejos) de un conjunto de medios, ofreciendo copias alternativas para recuperar el sistema de los errores provocados por los medios dañados. Para obtener más información, vea Usar conjuntos de medios de copia de seguridad reflejados.

Sumas de comprobación durante la ejecución de una sentencia BACKUP

SQL Server admite tres tipos de sumas de comprobación: una suma de comprobación de páginas, una de bloques de registro y una de copia de seguridad. Al generar una suma de comprobación de copia de seguridad, BACKUP comprueba que los datos que se leen de la base de datos son coherentes con cualquier suma de comprobación o indicación de página rasgada de la base de datos.

La instrucción BACKUP calcula opcionalmente una suma de comprobación de copia de seguridad en la secuencia de copia de seguridad; si hay una suma de comprobación de página o información de página rasgada en determinada página, al hacer la copia de seguridad de la página, BACKUP comprueba también el estado de página rasgada, la suma de comprobación y el Id. de la página. Al crear una suma de comprobación de copia de seguridad, una operación de copia de seguridad no agrega sumas de comprobación a las páginas. Las páginas se copian tal y como están en la base de datos y la copia de seguridad no las modifica. Debido a la carga que supone comprobar y generar sumas de comprobación de seguridad, su utilización puede tener consecuencias negativas sobre el rendimiento. Pueden quedar afectados tanto la carga de trabajo como el rendimiento de la copia de seguridad. Por consiguiente, el uso de la suma de comprobación de copia de seguridad es opcional. Cuando decida si va a generar sumas de comprobación durante una copia de seguridad, supervise cuidadosamente la sobrecarga de CPU en la que se incurrirá, así como el impacto sobre las posibles cargas de trabajo simultáneas del sistema.

Nota

BACKUP no modifica nunca la página de origen del disco ni el contenido de una página.

Las opciones siguientes de BACKUP controlan el comportamiento de la suma de comprobación de copia de seguridad:

  • CHECKSUM

    Solicita a la operación de copia de seguridad que compruebe en cada página si hay suma de comprobación y página rasgada (si está habilitada y disponible) y, también, que genere una suma de comprobación para toda la copia de seguridad.

    Si se solicita que se compruebe la suma de comprobación durante una operación de copia de seguridad:

    • Antes de escribir una página en los medios de copia de seguridad, BACKUP comprueba la información a nivel de página (suma de comprobación de página o detección de página rasgada), si existe. Si no existe esta información, la operación de copia de seguridad no puede comprobar la página; la página se incluye tal cual y el contenido se agrega a la suma de comprobación de copia de seguridad general.

      Nota

      Para obtener más información acerca de las sumas de comprobación de página y la detección de página rasgada, vea la opción PAGE_VERIFY de la instrucción ALTER DATABASE. Para obtener más información, vea ALTER DATABASE (Transact-SQL).

    • Para un uso opcional en el momento de la restauración, la copia de seguridad genera una suma de comprobación de copia de seguridad independiente (una suma de comprobación de copia de seguridad) y la registra en el medio de copia de seguridad, independientemente de si hay sumas de comprobación de copia de seguridad o no.

    • El conjunto de copia de seguridad se marca para indicar que contiene sumas de comprobación de copia de seguridad (en la columna has_backup_checksums de msdb.backupset). Para obtener más información, vea backupset (Transact-SQL).

    Nota

    Para las copias de seguridad de registros, se generan y comprueban las sumas de comprobación de copia de seguridad.

  • NO_CHECKSUM

    Deshabilita de forma explícita la validación de página y la generación de sumas de comprobación de copia de seguridad. Éste es el comportamiento predeterminado.

Controlar la respuesta a un error

Cuando se especifica CHECKSUMS, la copia de seguridad da error si BACKUP encuentra un error de página durante la comprobación. Las opciones siguientes de BACKUP controlan este comportamiento:

  • CONTINUE_AFTER_ERROR

    Indica a BACKUP que continúe aunque encuentre una suma de comprobación de copia de seguridad no válida. En ese caso, BACKUP:

    Indica en el conjunto de copia de seguridad de los medios de copia de seguridad que hay errores y realiza el seguimiento de la página en la tabla suspect_pages de la base de datos msdb. Para obtener más información, vea suspect_pages (Transact-SQL).

    • Registra el error en el registro de errores de SQL Server.

    • Marca el conjunto de copia de seguridad como conjunto que contiene este tipo de error (en la columna is_damaged de msdb.backupset). Para obtener más información, vea backupset (Transact-SQL).

    • Emite un mensaje que indica que la copia de seguridad se generó correctamente, pero contiene errores de página.

  • STOP_ON_ERROR

    Indica a BACKUP que dé error si no se comprueba una suma de comprobación. Éste es el comportamiento predeterminado.

Sumas de comprobación durante RESTORE y RESTORE VERIFYONLY

Si hay sumas de comprobación de copia de seguridad en los medios de copia de seguridad, de forma predeterminada, las operaciones RESTORE y RESTORE VERIFYONLY comprueban las sumas de comprobación de copia de seguridad y las sumas de comprobación de página. Si no hay ninguna suma de comprobación de copia de seguridad, cualquiera de las dos operaciones de restauración continúa sin realizar ninguna comprobación; esto se debe a que, sin una suma de comprobación de copia de seguridad, la restauración no puede comprobar de forma confiable las sumas de comprobación de página.

Hay dos opciones, CHECKSUM y NO_CHECKSUM, que le permiten modificar cómo RESTORE y RESTORE VERIFYONLY controlan la forma de comprobar las sumas de comprobación. Vea a continuación:

  • CHECKSUM

    Si solicita de forma explícita a CHECKSUM para una operación de restauración y la copia de seguridad contiene sumas de comprobación de copia de seguridad, se comprueban estas sumas y las sumas de comprobación de página, como en el caso predeterminado. No obstante, si el conjunto de copia de seguridad no tiene sumas de comprobación de copia de seguridad, la operación de restauración da error con un mensaje que indica que no hay sumas de comprobación.

  • NO_CHECKSUM

    Deshabilita de forma explícita la validación predeterminada de las sumas de comprobación por parte de la operación de restauración.

Controlar la respuesta a un error

Para especificar el comportamiento de una operación de restauración al encontrar un error, use las siguientes opciones de RESTORE y RESTORE VERIFYONLY:

  • CONTINUE_AFTER_ERROR

    Especifica que la operación de restauración debe continuar después de encontrar un error. Éste es el comportamiento predeterminado de RESTORE VERIFYONLY, que le permite informar de errores de validación y continuar, proporcionando la máxima información posible acerca del conjunto de copia de seguridad. CONTINUE_AFTER_ERROR indica a RESTORE que continúe lo mejor que pueda. Esto hace que entre otras cosas, RESTORE omita la suma de comprobación no válida.

  • STOP_ON_ERROR

    Especifica que la operación de restauración debe detenerse y dar error después de encontrar el primer error. Éste es el comportamiento predeterminado de RESTORE.