Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur komprimerade säkerhetskopior fungerar när du lägger till säkerhetskopior i en befintlig medieuppsättning.
Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 2297053
Sammanfattning
En av de viktigaste begränsningarna med komprimerade säkerhetskopior är att komprimerade och okomprimerade säkerhetskopior inte kan samexistera i en medieuppsättning. Den här begränsningen dokumenteras i Sql Server (Backup Compression).
Den här artikeln kompletterar den dokumentationen och innehåller mer information om det förväntade beteendet för komprimerade säkerhetskopior, i förhållande till standardinställningen för säkerhetskopiering av serverkonfigurationsalternativet - för säkerhetskopiering.
Symptom
Föreställ dig följande scenario:
- Du lägger till en säkerhetskopia i en befintlig medieuppsättning.
- Du förlitar dig på alternativet
backup compression defaultför den system lagrade proceduren sp_configure och angerWITH COMPRESSIONinte satsen i säkerhetskopieringsinstruktionen.
I det här scenariot märker du att säkerhetskopieringen lyckas men kan hamna i ett annat komprimeringstillstånd än förväntat.
Mer information
När du lägger till en säkerhetskopia i en befintlig medieuppsättning ärver säkerhetskopieringen komprimeringsinställningen från medieuppsättningen.
När en medieuppsättning skapas skrivs information om komprimeringsinställningen för den här medieuppsättningen till mediehuvudfilen.
Säkerhetskopior som tas till en befintlig medieuppsättning kan bara samexistera om komprimeringsinställningen för dessa säkerhetskopior är samma som för medieuppsättningen. Följande tre faktorer påverkar beteendet för komprimerade säkerhetskopior:
SQL Server-konfigurationsalternativ – Standard för säkerhetskopieringskomprimering
Alternativ för säkerhetskopieringsuppsättning – KOMPRIMERing eller NO_COMPRESSION
För befintliga medier är en viktig faktor att tänka på om medieuppsättningen för närvarande innehåller en komprimerad eller okomprimerad säkerhetskopia.
I följande tabell sammanfattas hur komprimerade säkerhetskopior fungerar baserat på de tre faktorerna ovan:
| Säkerhetskopieringsuttryck | Ny medieuppsättning | Lägg till i en befintlig medieuppsättning som har en komprimerad säkerhetskopia | Lägg till i en befintlig medieuppsättning som har en okomprimerad säkerhetskopia |
|---|---|---|---|
Sats för instruktionsnivå WITH COMPRESSION |
Säkerhetskopieringen lyckas och komprimeras | Klart | Fel |
Sats för instruktionsnivå WITH NO_COMPRESSION |
Säkerhetskopieringen lyckas och kommer att vara okomprimerad | Fel | Klart |
| Säkerhetskopiera -instruktion utan instruktionsnivåkomprimeringssats | Säkerhetskopieringen lyckas och komprimering beror på alternativet backup compression default för den system lagrade proceduren sp_configure |
Säkerhetskopieringen lyckas och komprimeras | Säkerhetskopieringen lyckas och kommer att vara okomprimerad |
Som du ser i tabellen ovan misslyckas säkerhetskopieringen aldrig på grund av ett matchningsfel i komprimeringsinställningarna när du använder alternativet backup compression default på servern och lägger till den komprimerade säkerhetskopian till en befintlig medieuppsättning. Den fungerar men ärver inställningen i huvudet på medieuppsättningen. Men om du anger -satsen WITH COMPRESSION eller WITH NO_COMPRESSION i din säkerhetskopieringsinstruktion utlöses ett fel om det finns ett matchningsfel mellan den säkerhetskopia som lagras i medieuppsättningen och den aktuella säkerhetskopieringen när det gäller komprimeringsinställningen.
Kommentar
Du hittar den aktuella inställningen för alternativet backup compression default genom att köra den system lagrade proceduren sp_configure i SQL Server Management Studio. Om du lägger till en komprimerad säkerhetskopia till ett befintligt media kan du hämta rubrikinformationen med hjälp av instruktionen RESTORE HEADERONLY. Mer information finns i avsnittet Exempel .
Exempel
Här följer några skriptexempel som visar beteendet för olika fall. Beteendet är detsamma oavsett om säkerhetskopian är till ett band eller en disk.
Exempel 1: När värdet för alternativet
backup compression defaultär0använder du instruktionsnivåsatsenWITH COMPRESSIONför att lägga till en säkerhetskopia till en befintlig medieuppsättning som har en inställning för okomprimerad säkerhetskopiering:Kontrollera komprimeringsvärdet:
-- The value of the option "backup compression default" is 0 by default sp_configure 'backup compression default'Skapa en ny medieuppsättning med hjälp av -satsen
WITH FORMAT:BACKUP DATABASE test TO DISK = N'E:\testbackup.bak' WITH FORMAT, INIT, NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10 GOKontrollera säkerhetskopieringen och rubriken och se att det komprimerade kolumnvärdet är 0:
RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'Säkerhetskopiera databasen
testmed hjälp av -satsenWITH 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 GONär du har kört SQL-skriptet kan du få felmeddelanden 3098 och 3013.
Exempel 2: Lägg till en säkerhetskopia i samma medieuppsättning när värdet för alternativet
backup compression defaultanges till1:backup compression defaultAktivera på servernivå:-- The option "backup compression default" as this point is set to 1. sp_configure 'backup compression default', 1 GO RECONFIGURE GOLägg till säkerhetskopian i samma medieuppsättning:
-- 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 GONär du har kört SQL-skriptet kan du se följande utdata:
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).Kontrollera rubriken för säkerhetskopiering och mediauppsättning:
-- 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'
Exempel 3: Ange värdet för alternativet
backup compression defaulttill0och lägg till en säkerhetskopia i en befintlig medieuppsättning som har en komprimerad säkerhetskopieringsinställning:Skapa en ny medieuppsättning med hjälp av -satsen
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 GOKontrollera rubriken för säkerhetskopiering och mediauppsättning:
RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'Ställ in alternativet
backup compression defaultpå0:sp_configure 'backup compression default', 0 GO RECONFIGURE GOSäkerhetskopiera databasen
testtill samma medieuppsättning med hjälp av -satsenWITH 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 GOKontrollera rubriken för säkerhetskopiering och mediauppsättning:
-- 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'
Exempel 4: Komprimerade säkerhetskopior kan inte samexistera med NT-säkerhetskopior som har en okomprimerad inställning:
Gör en NT-säkerhetskopiering och verifiera säkerhetskopieringshuvudet:
-- You can see that it is not a SQL backup and the value of compressed is 0 RESTORE HEADERONLY FROM TAPE = N'\\.\Tape0'Säkerhetskopiera databasen
testtill samma medieuppsättning med hjälp av satserWITH INITochWITH COMPRESSION:BACKUP DATABASE test TO TAPE = N'\\.\Tape0' WITH INIT, COMPRESSION, NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10 GONär du har kört SQL-skriptet kan du få felmeddelanden 3098 och 3013.
Exempel 5: Icke-komprimerade säkerhetskopior och NT-säkerhetskopior som har en okomprimerad inställning kan samexistera:
Säkerhetskopiera databasen
testtill samma medieuppsättning utan initiering och ingen komprimering:--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 GOKontrollera säkerhetskopieringshuvudet och se SQL- och NT-säkerhetskopieringen:
RESTORE HEADERONLY FROM TAPE = N'\\.\Tape0'Framtvinga en komprimerad säkerhetskopia på ett band med en NT-säkerhetskopia:
BACKUP DATABASE test TO TAPE = N'\\.\Tape0' WITH COMPRESSION, NAME = N'testbackup1 Full Database Backup', SKIP, NOUNLOAD, STATS = 10 GONär du har kört SQL-skriptet kan du få felmeddelanden 3098 och 3013.
Felmeddelanden 3098 och 3013
Felmeddelande 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.Felmeddelande 3013
Msg 3013, Level 16, State 1, Line 1 BACKUP DATABASE is terminating abnormally.