Mevcut bir medya kümesine yedekleme eklediğinizde sıkıştırılmış yedeklemelerin davranışı

Bu makalede, mevcut bir medya kümesine yedekleme eklediğinizde sıkıştırılmış yedeklemelerin davranışı tanıtılır.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 2297053

Özet

Sıkıştırılmış yedeklemelerin temel kısıtlamalarından biri, sıkıştırılmış ve sıkıştırılmamış yedeklemelerin bir medya kümesinde birlikte bulunamamalarıdır. Bu kısıtlama Yedekleme Sıkıştırması (SQL Server) bölümünde belgelenmiştir.

Bu makale, bu belgeleri tamamlar ve sunucu yapılandırma seçeneği - yedekleme sıkıştırma varsayılanı ile ilgili olarak, sıkıştırılmış yedeklemelerin beklenen davranışı hakkında daha fazla bilgi sağlar.

Belirtiler

Aşağıdaki senaryoyu değerlendirin:

  • Var olan bir medya kümesine yedek eklersiniz.
  • Sp_configure sistem saklı yordamı seçeneğine backup compression default güvenirsiniz ve backup deyiminde yan tümcesini WITH COMPRESSION belirtmezsiniz.

Bu senaryoda yedeklemenin başarılı olduğunu ancak beklenenden farklı bir sıkıştırma durumunda olabileceğini fark edeceksiniz.

Daha Fazla Bilgi

Var olan bir medya kümesine yedek eklediğinizde, yedekleme medya kümesinden sıkıştırma ayarını devralır.

Bir medya kümesi oluşturulduğunda, bu medya kümesinin sıkıştırma ayarıyla ilgili bilgiler medya üst bilgi dosyasına yazılır.

Var olan bir medya kümesine alınan yedeklemeler yalnızca bu yedeklemelerin sıkıştırma ayarı medya kümesiyle aynıysa birlikte bulunabilir. Aşağıdaki üç faktör sıkıştırılmış yedeklemelerin davranışını etkiler:

Aşağıdaki tabloda, yukarıdaki üç faktöre göre sıkıştırılmış yedeklemelerin davranışı özetlenmiştir:

Backup deyimi Yeni medya kümesi Sıkıştırılmış yedeği olan mevcut bir medya kümesine ekleme Sıkıştırılmamış yedeklemesi olan mevcut bir medya kümesine ekleme
Deyim düzeyi yan tümcesi WITH COMPRESSION Yedekleme başarılı olur ve sıkıştırılır Başarılı Hata
Deyim düzeyi yan tümcesi WITH NO_COMPRESSION Yedekleme başarılı olur ve sıkıştırılmaz Hata Başarılı
Deyim düzeyi sıkıştırma yan tümcesi olmadan deyimi yedekleme Yedekleme başarılıdır ve sıkıştırma, sistem saklı yordamının seçeneğine backup compression default bağlıdır sp_configure Yedekleme başarılı olur ve sıkıştırılır Yedekleme başarılı olur ve sıkıştırılmaz

Yukarıdaki tablodan görebileceğiniz gibi, sunucuda seçeneğini backup compression default kullandığınızda ve sıkıştırılmış yedeklemeyi mevcut bir medya kümesine eklediğinizde, sıkıştırma ayarlarındaki uyuşmazlık nedeniyle yedekleme hiçbir zaman başarısız olmaz. Çalışır ancak medya kümesinin üst bilgisindeki ayarı devralır. Ancak yan tümcesini WITH COMPRESSION veya WITH NO_COMPRESSION backup deyiminizde belirtirseniz, medya kümesinde depolanan yedekleme ile alınan geçerli yedekleme arasında sıkıştırma ayarı açısından uyuşmazlık olması durumunda bir hata oluşur.

Not

SQL Server Management Studio'da sistem saklı yordamını sp_configure çalıştırarak seçeneğin backup compression default geçerli ayarını bulabilirsiniz. Var olan bir medyaya sıkıştırılmış yedekleme ekiyorsanız, RESTORE HEADERONLY deyimini kullanarak üst bilgi bilgilerini alabilirsiniz. Daha fazla bilgi için Örnekler bölümüne bakın.

Örnekler

Çeşitli durumların davranışını göstermek için bazı betik örnekleri aşağıda verilmiştir. Yedeklemenin bir banda veya diske olması fark etmeksizin davranış aynıdır.

  • Örnek 1: Seçeneğin backup compression default değeri olduğunda 0deyimi düzeyi yan tümcesini WITH COMPRESSION kullanarak sıkıştırılmamış yedekleme ayarına sahip mevcut bir medya kümesine yedekleme ekleyin:

    1. Sıkıştırma değerini denetleyin:

      -- The value of the option "backup compression default" is 0 by default
      sp_configure 'backup compression default'
      
    2. yan tümcesini WITH FORMATkullanarak yeni bir medya kümesi oluşturun:

      BACKUP DATABASE test TO DISK = N'E:\testbackup.bak'
      WITH FORMAT, INIT,
      NAME = N'testbackup-Full Database Backup', SKIP, NOUNLOAD, STATS = 10
      GO
      
    3. Yedeklemeyi ve üst bilgiyi denetleyin ve sıkıştırılmış sütun değerinin 0 olduğuna bakın:

      RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'
      
    4. yan tümcesini WITH COMPRESSIONkullanarak veritabanını test yedekleyin:

      -- 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
      

      SQL betiğini yürüttkten sonra 3098 ve 3013 hata iletilerini alabilirsiniz.

  • Örnek 2: seçeneğinin backup compression default 1değeri olarak ayarlanırken aynı medya kümesine bir yedekleme ekleme:

    1. Sunucu düzeyinde açın backup compression default :

      -- The option "backup compression default" as this point is set to 1.
      sp_configure 'backup compression default', 1
      GO
      RECONFIGURE
      GO
      
    2. Yedeklemeyi aynı medya kümesine ekleme:

      -- 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
      

      SQL betiğini yürüttkten sonra aşağıdaki çıkışı görebilirsiniz:

      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. Yedekleme ve medya kümesi üst bilgisini denetleyin:

      -- 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'
      
  • Örnek 3: seçeneğinin backup compression default 0değerini olarak ayarlayın ve sıkıştırılmış yedekleme ayarına sahip mevcut bir medya kümesine bir yedekleme ekler:

    1. yan tümcesini WITH FORMATkullanarak yeni bir medya kümesi oluşturun:

      -- 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. Yedekleme ve medya kümesi üst bilgisini denetleyin:

      RESTORE HEADERONLY FROM DISK = N'E:\testbackup.bak'
      
    3. seçeneğini backup compression default olarak yeniden 0ayarlayın:

      sp_configure 'backup compression default', 0
      GO
      RECONFIGURE
      GO
      
    4. yan tümcesini WITH INITkullanarak veritabanını test aynı medya kümesine yedekleyin:

      -- 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. Yedekleme ve medya kümesi üst bilgisini denetleyin:

      -- 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'
      
  • Örnek 4: Sıkıştırılmış yedeklemeler sıkıştırılmamış bir ayara sahip NT yedeklemeleriyle birlikte bulunamaz:

    1. NT yedeklemesi alın ve yedekleme üst bilgisini doğrulayın:

      -- You can see that it is not a SQL backup and the value of compressed is 0
      RESTORE HEADERONLY FROM TAPE = N'\\.\Tape0'
      
    2. ve WITH COMPRESSIONyan tümcelerini kullanarak veritabanını test aynı medya kümesine yedekleyinWITH INIT:

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

      SQL betiğini yürüttkten sonra 3098 ve 3013 hata iletilerini alabilirsiniz.

  • Örnek 5: Sıkıştırılmamış yedeklemeler ve sıkıştırılmamış ayara sahip NT yedeklemeleri birlikte bulunabilir:

    1. Veritabanını test başlatmadan ve sıkıştırma olmadan aynı medya kümesine yedekleyin:

      --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. Yedekleme üst bilgisini doğrulayın ve SQL ve NT yedeklemesine bakın:

      RESTORE HEADERONLY FROM TAPE = N'\\.\Tape0'
      
    3. NT yedeklemesi olan bir bantta sıkıştırılmış yedeklemeye zorlama:

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

      SQL betiğini yürüttkten sonra 3098 ve 3013 hata iletilerini alabilirsiniz.

Hata iletileri 3098 ve 3013

  • Hata iletisi 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.  
    
  • Hata iletisi 3013

    Msg 3013, Level 16, State 1, Line 1  
    BACKUP DATABASE is terminating abnormally.