Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 el valor predeterminado de compresión de copia de seguridad de la opción - de configuración del servidor.
Síntomas
Considere el caso siguiente:
- Anexe una copia de seguridad a un conjunto de medios existente.
- Se basa en la opción
backup compression defaultdel procedimiento almacenado del sistema sp_configure y no se especifica laWITH COMPRESSIONcláusula en la instrucción de copia de seguridad.
En este escenario, observará que la copia de seguridad se realiza correctamente, pero puede acabar en un estado de compresión diferente del 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, se escribe información sobre la configuración de compresión de este conjunto de medios 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:
Opción de configuración de SQL Server: valor predeterminado de compresión de copia de seguridad
Opciones del conjunto de copia de seguridad: COMPRESIÓN o NO_COMPRESSION
Para los medios existentes, un factor importante que se debe 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 | Nuevo conjunto de medios | Anexar a un conjunto de medios existente que tenga 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 descomprimirá | Error | Correcto |
| Copia de seguridad de la instrucción 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 descomprimirá |
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 un error 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ón backup 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, vea la sección Ejemplos.
Ejemplos
Estos son algunos ejemplos de script para demostrar el comportamiento de varios casos. El comportamiento es el mismo si la copia de seguridad está en una cinta o en un disco.
Ejemplo 1: Cuando el valor de la opción
backup compression defaultes0, use la cláusulaWITH COMPRESSIONde 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:Compruebe el valor de compresión:
-- The value of the option "backup compression default" is 0 by default sp_configure 'backup compression default'Cree un 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 GOCompruebe 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'Realice una copia de seguridad de la base de datos
testmediante la cláusulaWITH 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 GODespués de ejecutar el script SQL, puede recibir mensajes de error 3098 y 3013.
Ejemplo 2: Anexe una copia de seguridad al mismo conjunto de medios al establecer el valor de opción
backup compression defaulten1:backup compression defaultActive en el nivel de servidor:-- The option "backup compression default" as this point is set to 1. sp_configure 'backup compression default', 1 GO RECONFIGURE GOAnexe 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 GODespués de ejecutar el script SQL, puede ver la salida siguiente:
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).Compruebe el encabezado de conjunto de medios y copia de seguridad:
-- 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 default0en y anexe una copia de seguridad a un conjunto de medios existente que tenga una configuración de copia de seguridad comprimida:Cree un 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 GOCompruebe el encabezado de conjunto de medios y copia de seguridad:
RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'Vuelva a establecer la opción
backup compression defaulten0:sp_configure 'backup compression default', 0 GO RECONFIGURE GORealice una copia de seguridad de la base de datos
testen el mismo conjunto de medios mediante la cláusulaWITH 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 GOCompruebe el encabezado de conjunto de medios y copia de seguridad:
-- 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:
Realice una copia de seguridad 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'Realice una copia de seguridad de la base de datos
testen el mismo conjunto de medios mediante cláusulasWITH INITyWITH COMPRESSION:BACKUP DATABASE test TO TAPE = N'\\.\Tape0' WITH INIT, COMPRESSION, NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10 GODespués de ejecutar el script SQL, puede recibir 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:
Realice una copia de seguridad de la base de datos
testen 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 GOCompruebe el encabezado de copia de seguridad y vea la copia de seguridad de SQL y NT:
RESTORE HEADERONLY FROM TAPE = N'\\.\Tape0'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 GODespués de ejecutar el script SQL, puede recibir 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.