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 seguridadWITH 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:
- 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
- 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.