Beteende för komprimerade säkerhetskopieringar när du lägger till säkerhetskopior i en befintlig medieuppsättning

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 default för den system lagrade proceduren sp_configure och anger WITH COMPRESSION inte 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:

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 är 0använder du instruktionsnivåsatsen WITH COMPRESSION för att lägga till en säkerhetskopia till en befintlig medieuppsättning som har en inställning för okomprimerad säkerhetskopiering:

    1. Kontrollera komprimeringsvärdet:

      -- The value of the option "backup compression default" is 0 by default
      sp_configure 'backup compression default'
      
    2. 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
      GO
      
    3. Kontrollera säkerhetskopieringen och rubriken och se att det komprimerade kolumnvärdet är 0:

      RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'
      
    4. Säkerhetskopiera databasen test med hjälp av -satsen 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
      

      Nä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 default anges till 1:

    1. backup compression default Aktivera på servernivå:

      -- The option "backup compression default" as this point is set to 1.
      sp_configure 'backup compression default', 1
      GO
      RECONFIGURE
      GO
      
    2. Lä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
      GO
      

      Nä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).
      
    3. 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 default till 0och lägg till en säkerhetskopia i en befintlig medieuppsättning som har en komprimerad säkerhetskopieringsinställning:

    1. 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
      GO
      
    2. Kontrollera rubriken för säkerhetskopiering och mediauppsättning:

      RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'
      
    3. Ställ in alternativet backup compression default0:

      sp_configure 'backup compression default', 0
      GO
      RECONFIGURE
      GO
      
    4. Säkerhetskopiera databasen test till samma medieuppsättning med hjälp av -satsen 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. Kontrollera 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:

    1. 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'
      
    2. Säkerhetskopiera databasen test till samma medieuppsättning med hjälp av satser WITH INIT och WITH COMPRESSION:

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

      Nä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:

    1. Säkerhetskopiera databasen test till 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
      GO
      
    2. Kontrollera säkerhetskopieringshuvudet och se SQL- och NT-säkerhetskopieringen:

      RESTORE HEADERONLY FROM TAPE = N'\\.\Tape0'
      
    3. 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
      GO
      

      Nä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.