Comportamiento de las copias de seguridad comprimidas cuando anexa las copias de seguridad a un conjunto de medios existente

En este artículo se presenta el comportamiento de las copias de seguridad comprimidas al anexarlas 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 las 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).

En este artículo se complementa la documentación y se proporciona más información sobre el comportamiento esperado de las copias de seguridad comprimidas en relación con la configuración de configuración del servidor predeterminado de compresión de copia de seguridad.

Más información

Cuando anexa una copia de seguridad comprimida a un medio existente, hereda la configuración de compresión del conjunto de medios. Si confía en la configuración de la compresión de copia de seguridad sp_configure y se anexa a los conjuntos de medios existentes, puede que acabe con una copia de seguridad en un estado de compresión diferente del esperado.

Esto solo es cierto en las siguientes circunstancias:

  • La copia de seguridad se anexa a un conjunto de medios existente.
  • Depende de la opción de sp_configure backup compression default y no especifica la opción de nivel de instrucción de copia de seguridad WITH COMPRESSION .

Cuando se crea un conjunto de medios, la información sobre si este conjunto de medios es para una copia de seguridad comprimida o se escribe una copia de seguridad normal en el archivo de encabezado del medio.

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:

  1. Opción de configuración de SQL Server: valor predeterminado de compresión de copia de seguridad
  2. Opciones del conjunto de copia de seguridad: compresión o NO_COMPRESSION
  3. Si está anexando un conjunto de medios existente o escribiendo la copia de seguridad en un nuevo conjunto de medios. Para los medios existentes, un factor adicional a tener en cuenta es si el conjunto de medios contiene actualmente una copia de seguridad comprimida o sin comprimir.

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 Nueva MediaSet Anexar al conjunto de medios Anexar al conjunto de medios (Descomprimido)
Opciones de la instrucción backup El conjunto de medios existente tiene una copia de seguridad comprimida El conjunto de medios exdefinido tiene una copia de seguridad sin comprimir
Nivel de instrucción backup con COMPRESSION cláusula Copia de seguridad correcta comprimida Correcto Error
Nivel de instrucción backup con NO_COMPRESSION cláusula Copia de seguridad correcta: sin comprimir Error Correcto
Copia de seguridad de la instrucción sin la cláusula de compresión de nivel de instrucción La compresión correcta depende de sp_configure backup compression configuración La copia de seguridad correcta se comprimirá La copia de seguridad correcta se descomprime

Como se puede ver en la tabla anterior, cuando se usa la configuración de compresión predeterminada en el servidor y se anexa a un conjunto de medios existente, la copia de seguridad no se realizará nunca debido a una no 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 COMPRESSION las NO_COMPRESSION Opciones u en la instrucción backup, se producirá un error si no hay coincidencia entre la copia de seguridad almacenada en el conjunto de medios y la copia de seguridad actual que se está tomando en términos de la configuración de compresión.

Nota

Puede encontrar la configuración actual de la backup compression opción predeterminada ejecutando sp_configure el comando en SQL Server Management Studio. Si va a anexar a un medio existente, puede obtener la información de encabezado mediante el comando restore headeronly . Para obtener más información, vea la sección ejemplos más adelante en este artículo.

Ejemplos: a continuación se muestra un script de ejemplo para demostrar el comportamiento de diversos casos. El comportamiento es el mismo si la copia de seguridad se encuentra en una cinta o en un disco.

  • El valor de compresión es 0.

    -- Note compression value, by default it should be 0
    sp_configure 'backup compression'
    -- Initial Backup completes successfully
    BACKUP DATABASE test TO DISK = N'E:\testbackup.bak' WITH FORMAT, INIT,
    NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10
    GO
    -- Check the backup and the header, and see the Compressed column value, it is 0
    restore headeronly from DISK = N'E:\testbackup.bak'
    -- Now backup using "with compression" and it will fail
    -- as backups ( compressed and non compressed cannot 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 el mensaje de error 3098 y 3013 .

  • Active la compresión de copia de seguridad predeterminada en el nivel de servidor.

    -- Turn on default backup Compression at the server level
    sp_configure 'backup compression',1 'backup compression',1
    go
    reconfigure
    go
    -- The sp_configure 'default compression' as this point is set to 1.
    -- Given that you may expect the backup to be compressed and it will be if it -- is a new media set
    -- However if you backup and append 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
    

    Se han procesado dos páginas para la base de datos test , el archivo test_log en el archivo 2.

    La base de datos de copia de seguridad se procesó correctamente 162 páginas en 6,211 segundos (0,203 MB/seg.).

  • Compruebe el encabezado del conjunto de medios y copias de seguridad.

    -- Check the backup and meadia set header. 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 WITH COMPRESSION clause in the backup statement given that compressed and non compressed backups cannot co-exist in the media set.
    restore headeronly from DISK = N'E:\testbackup.bak'
    --If you create a new mediaset using the FORMAT option, then the current compression setting is inherited
    -- Create a new media set using FORMAT Or by specifying a new file
    BACKUP DATABASE test TO DISK = N'E:\testbackup.bak' WITH FORMAT, INIT, NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10
    GO
    -- Check the backup and meadia set header
    restore headeronly from DISK = N'E:\testbackup.bak'
    -- If you use the with INIT, the backup sets are overwritten but the media header is not
    -- Toggle the backup compression setting back to 0
    sp_configure 'backup compression',0
    go
    reconfigure
    go
    -- backup to the same media set with INIT
    BACKUP DATABASE test TO DISK = N'E:\testbackup.bak' WITH INIT,
    NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10
    GO
    -- Check the backup and media set header
    -- Note that even though we changed backup compression 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'
    
  • Otra limitación es que las copias de seguridad comprimidas no coexisten con las copias de seguridad NT:

    -- Take an NT Backup
    -- You can verify the backup Header now, see it is not a SQL backup
    restore headeronly from DISK = N'E:\testbackup.bak'
    -- backup to the same media set with INIT and compression and you get the error message
    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 el mensaje de error 3098 y 3013 .

  • Realice una copia de seguridad en el mismo conjunto de medios sin inicializar y sin compresión.

    -- backup to the same media set without initializing and NO compression and 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
    -- You can verify the backup Header now,see the SQL and the NT backup
    Restore headeronly from tape = N'\\.\Tape0'
    -- Forcing a Compressed backup on a tape with an NT backup results in the error below
    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 el mensaje de error 3098 y 3013 .

mensaje de error 3098 y 3013

  • mensaje de error 3098

    Msj 3098, nivel 16, estado 2, línea 1
    No se puede realizar la copia de seguridad porque se ha solicitado la "compresión" después de que el medio se haya formateado con una estructura incompatible. Para anexar a este conjunto de medios, debe omitir ' COMPRESSION ' o especificar ' NO_COMPRESSION '. Como alternativa, puede crear un nuevo conjunto de medios con el formato WITH en la instrucción de copia de seguridad. Si usa WITH FORMAT en un conjunto de medios existente, se sobrescribirán todos los conjuntos de copia de seguridad.

  • mensaje de error 3013

    Msj 3013, nivel 16, estado 1, línea 1
    La base de datos de copia de seguridad termina anormalmente.