Comportamiento de las copias de seguridad comprimidas al anexar copias de seguridad a un conjunto de medios existente

En este artículo se presenta el comportamiento de las copias de seguridad comprimidas al anexar copias de seguridad a un conjunto de medios existente.

Versión del producto original: SQL Server
Número de KB original: 2297053

Resumen

Una de las principales restricciones con copias de seguridad comprimidas es que las copias de seguridad comprimidas y sin comprimir no pueden coexistir en un conjunto de medios. Esta restricción se documenta en Compresión de copia de seguridad (SQL Server).

Este artículo complementa esa documentación y proporciona más información sobre el comportamiento esperado de las copias de seguridad comprimidas, en relación con elvalor predeterminado de compresión de copia de seguridadde la opción de - configuración del servidor.

Síntomas

Imagine la siguiente situación:

  • Anexa una copia de seguridad a un conjunto de medios existente.
  • Se basa en la opción backup compression default del procedimiento almacenado del sistema sp_configure y no especifica la WITH COMPRESSION cláusula en la instrucción backup.

En este escenario, observará que la copia de seguridad se realiza correctamente, pero puede terminar en un estado de compresión diferente al esperado.

Más información

Al anexar una copia de seguridad a un conjunto de medios existente, la copia de seguridad hereda la configuración de compresión del conjunto de medios.

Cuando se crea un conjunto de medios, la información sobre la configuración de compresión de este conjunto de medios se escribe en el archivo de encabezado multimedia.

Las copias de seguridad realizadas en un conjunto de medios existente solo pueden coexistir si la configuración de compresión de estas copias de seguridad es la misma que la del conjunto de medios. Los tres factores siguientes afectan al comportamiento de las copias de seguridad comprimidas:

En la tabla siguiente se resume el comportamiento de las copias de seguridad comprimidas en función de los tres factores anteriores:

Instrucción Backup Nuevo conjunto de medios Anexar a un conjunto de medios existente que tiene una copia de seguridad comprimida Anexar a un conjunto de medios existente que tiene una copia de seguridad sin comprimir
Cláusula de nivel de instrucción WITH COMPRESSION La copia de seguridad se realiza correctamente y se comprimirá Correcto Error
Cláusula de nivel de instrucción WITH NO_COMPRESSION La copia de seguridad se realiza correctamente y se descomprime Error Correcto
Instrucción De copia de seguridad sin cláusula de compresión de nivel de instrucción La copia de seguridad se realiza correctamente y la compresión depende de la opción backup compression default del procedimiento almacenado del sistema. sp_configure La copia de seguridad se realiza correctamente y se comprimirá La copia de seguridad se realiza correctamente y se descomprime

Como puede ver en la tabla anterior, al usar la opción backup compression default en el servidor y anexar la copia de seguridad comprimida a un conjunto de medios existente, la copia de seguridad nunca producirá un error debido a una falta de coincidencia en la configuración de compresión. Funciona, pero hereda la configuración en el encabezado del conjunto de medios. Sin embargo, si especifica la cláusula WITH COMPRESSION o WITH NO_COMPRESSION en la instrucción de copia de seguridad, se producirá un error si hay una discrepancia entre la copia de seguridad almacenada en el conjunto de medios y la copia de seguridad actual que se está realizando, en términos de la configuración de compresión.

Nota:

Para encontrar la configuración actual de la opciónbackup compression default, ejecute el procedimiento sp_configure almacenado del sistema en SQL Server Management Studio. Si va a anexar una copia de seguridad comprimida a un medio existente, puede obtener la información de encabezado mediante la instrucción RESTORE HEADERONLY. Para obtener más información, consulte la sección Ejemplos .

Ejemplos

Estos son algunos ejemplos de script para mostrar el comportamiento de varios casos. El comportamiento es el mismo si la copia de seguridad se realiza en una cinta o en un disco.

  • Ejemplo 1: cuando el valor de la opción backup compression default es 0, use la cláusula WITH COMPRESSION de nivel de instrucción para anexar una copia de seguridad a un conjunto de medios existente que tenga una configuración de copia de seguridad sin comprimir:

    1. Compruebe el valor de compresión:

      -- The value of the option "backup compression default" is 0 by default
      sp_configure 'backup compression default'
      
    2. Cree un nuevo conjunto de medios mediante la cláusula WITH FORMAT:

      BACKUP DATABASE test TO DISK = N'E:\testbackup.bak'
      WITH FORMAT, INIT,
      NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10
      GO
      
    3. Compruebe la copia de seguridad y el encabezado y vea que el valor de la columna comprimida es 0:

      RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'
      
    4. Realice una copia de seguridad de la base de datos test mediante la cláusula WITH COMPRESSION:

      -- The backup will fail as compressed and non compressed backups can't be mixed within the same media set
      BACKUP DATABASE test TO DISK = N'E:\testbackup.bak'
      WITH NAME = N'testbackup-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
      GO
      

      Después de ejecutar el script SQL, puede recibir los mensajes de error 3098 y 3013.

  • Ejemplo 2: Anexar una copia de seguridad al mismo conjunto de medios al establecer el valor de la opción backup compression default en 1:

    1. Activar en backup compression default el nivel de servidor:

      -- The option "backup compression default" as this point is set to 1.
      sp_configure 'backup compression default', 1
      GO
      RECONFIGURE
      GO
      
    2. Anexe la copia de seguridad al mismo conjunto de medios:

      -- Given that you may expect the backup to be compressed and it will be if it is a new media set.
      -- However, if you have a backup and append the backup to the same media set, 
      -- the backup works but results in an uncompressed backup.
      BACKUP DATABASE test TO DISK = N'E:\testbackup.bak'
      WITH NAME = N'testbackup-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
      GO
      

      Después de ejecutar el script SQL, puede ver la siguiente salida:

      Processed two pages for database `test`, file _test_log_ on file 2.
      
      BACKUP DATABASE successfully processed 162 pages in 6.211 seconds (0.203 MB/sec).
      
    3. Compruebe el encabezado de la copia de seguridad y del conjunto de medios:

      -- Then, you will see that though Server default is set to compressed, the backup given that
      -- it is appended to an existing media set inherits the compression setting of the media set itself.
      -- You may expect this to have failed with the same error as when specifying the clause `WITH COMPRESSION`
      -- in the backup statement given that compressed and non compressed backups can't co-exist in the media set.
      RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'
      
  • Ejemplo 3: establezca el valor de la opción backup compression default en 0y anexe una copia de seguridad a un conjunto de medios existente que tenga una configuración de copia de seguridad comprimida:

    1. Cree un nuevo conjunto de medios mediante la cláusula WITH FORMAT:

      -- If you create a new media set by using the FORMAT option, the current compression setting is inherited
      BACKUP DATABASE test TO DISK = N'E:\testbackup.bak'
      WITH FORMAT, INIT, NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10
      GO
      
    2. Compruebe el encabezado de la copia de seguridad y del conjunto de medios:

      RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'
      
    3. Vuelva a establecer la opción backup compression default en 0:

      sp_configure 'backup compression default', 0
      GO
      RECONFIGURE
      GO
      
    4. Realice una copia de seguridad de la base de datos test en el mismo conjunto de medios mediante la cláusula WITH INIT:

      -- If you use the clause "WITH INIT", the backup sets are overwritten but the media header is not
      BACKUP DATABASE test TO DISK = N'E:\testbackup.bak'
      WITH INIT, NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10
      GO
      
    5. Compruebe el encabezado de la copia de seguridad y del conjunto de medios:

      -- Note that even though we changed backup compression default to 0, the old media header is preserved which has it as 1, and the backup goes as compressed
      RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'
      
  • Ejemplo 4: Las copias de seguridad comprimidas no pueden coexistir con copias de seguridad nt que tienen una configuración sin comprimir:

    1. Realice una copia de seguridad de NT y compruebe el encabezado de copia de seguridad:

      -- You can see that it is not a SQL backup and the value of compressed is 0
      RESTORE HEADERONLY FROM TAPE = N'\\.\Tape0'
      
    2. Realice una copia de seguridad de la base de datos test en el mismo conjunto de medios mediante cláusulas WITH INIT y WITH COMPRESSION:

      BACKUP DATABASE test TO TAPE = N'\\.\Tape0'
      WITH INIT, COMPRESSION,
      NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10
      GO
      

      Después de ejecutar el script SQL, puede recibir los mensajes de error 3098 y 3013.

  • Ejemplo 5: Las copias de seguridad no comprimidas y las copias de seguridad NT que tienen una configuración sin comprimir pueden coexistir:

    1. Realice una copia de seguridad de la base de datos test en el mismo conjunto de medios sin inicializar y sin compresión:

      --The backups ( NT and non-compressed backup) can co-exist
      BACKUP DATABASE test TO TAPE = N'\\.\Tape0'
      WITH NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10
      GO
      
    2. Compruebe el encabezado de copia de seguridad y vea la copia de seguridad de SQL y NT:

      RESTORE HEADERONLY FROM TAPE = N'\\.\Tape0'
      
    3. Forzar una copia de seguridad comprimida en una cinta con una copia de seguridad nt:

      BACKUP DATABASE test TO TAPE = N'\\.\Tape0'
      WITH COMPRESSION,
      NAME = N'testbackup1 Full Database Backup', SKIP, NOUNLOAD, STATS = 10
      GO
      

      Después de ejecutar el script SQL, puede recibir los mensajes de error 3098 y 3013.

Mensajes de error 3098 y 3013

  • Mensaje de error 3098

    Msg 3098, Level 16, State 2, Line 1  
    The backup cannot be performed because 'COMPRESSION' was requested after the media was formatted with an incompatible structure.
    To append to this media set, either omit 'COMPRESSION' or specify 'NO_COMPRESSION'. Alternatively, you can create a new media set by using WITH FORMAT in your BACKUP statement.
    If you use WITH FORMAT on an existing media set, all its backup sets will be overwritten.  
    
  • Mensaje de error 3013

    Msg 3013, Level 16, State 1, Line 1  
    BACKUP DATABASE is terminating abnormally.