PieceMeal Restore
“FileGroup Backup ve Restore İşlemleri(Partial Backup)” isimli makalemde sadece read write filegroup’ların backup’ını alarak gerektiğinde read only mode’da olan filegroup’ları restore etmeden sadece read write filegroup’ları restore edebileceğimiz konuyu anlattım.
Bu makalede de filegroup’ları teker teker restore edip diğer filegroup’ların restore’unu beklemeden ayağa kaldırabileceğimiz konuya değineceğiz. Örneğin 50 TB’lık bir veritabanınız var ve bu restore işleminin süresini beklemeden sadece son file group’u ilk önce ayağa kaldırarak en az kesinti ile uygulamayı ayağa kaldırmamız gerektiğinde kullanışlı bir restore yöntemi olabilir.
Öncelikle “FileGroup Backup ve Restore İşlemleri(Partial Backup)” isimli makalemde anlattığım şekilde primary ve tüm read write filegroup’ların backup’ını alıyoruz ve sonra read only filegroup’ların backup’ını alıyoruz.
“FileGroup Backup ve Restore İşlemleri(Partial Backup)” isimli makalemde read only filegroup’ları restore etmemiştik ve restore işlemi sonucunda read only filegroup’lar da online olmuştu. Bu makalede öncelikle tüm read write filegroup’ları restore edeceğiz fakat read only filegroup’lar recovey pending mode’da kalacak.
Aşağıdaki script ile primary ve tüm read write filegroup’ların backup’ını alıyoruz.
BACKUP DATABASE [Test] READ_WRITE_FILEGROUPS TO DISK = N'C:\MSSQL\READWRITEFILEGROUPS.BAK' WITH NOFORMAT, NOINIT, NAME = N'Test-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 1
Aşağıdaki script ile read only filegroup’un backup’ını alıyoruz.
BACKUP DATABASE [Test] FILEGROUP = N'READONLYFILEGROUP' TO DISK = N'C:\MSSQL\READONLYFILEGROUPBACKUP.BAK' WITH NOFORMAT, NOINIT, NAME = N'Test-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 1
Daha sonra aşağıdaki script ile PRIMARY ve TABLESGROUP filegroup’larını teker teker belirterek restore işlemini recovery mode’da gerçekleştiriyoruz. Dikkat ederseniz “FileGroup Backup ve Restore İşlemleri(Partial Backup)” isimli makalemdeki restore script’inden farklı olarak PARTIAL ifadesi eklendi ve filegroup’lar teker teker belirtildi. Eğer restore edeceğiniz log backup’ınız varsa aşağıdaki script’te RECOVERY kısmını NORECOVERY yaparak “FileGroup Backup ve Restore İşlemleri(Partial Backup)” isimli makalemde anlattığım gibi log backup’ları da restore edebilirsiniz.
use master GO RESTORE DATABASE Test FILEGROUP='PRIMARY' ,FILEGROUP='TABLESGROUP' FROM DISK = N'C:\MSSQL\READWRITEFILEGROUPS.BAK' WITH PARTIAL,RECOVERY; GO
Bu restore işlemi tamamlandıktan sonra read write filegroup’larda işlem yapabilirsiniz ama read only filegroup recovey pending mode’da olacağı için select çekemezsiniz.
Aşağıdaki script yardımıyla read only filegroup’un recovey pending mode’da beklediğini görebilirsiniz.
SELECT [name], [state_desc] FROM Test.sys.database_files;
Aşağıdaki script yardımıyla da read only filegroup’u restore ederek işleminizi tamamlayabilirsiniz.
RESTORE DATABASE Test FILEGROUP='READONLYFILEGROUP' FROM DISK = N'C:\MSSQL\READONLYFILEGROUPBACKUP.BAK' WITH RECOVERY
Aşağıdaki script’i tekrar çalıştırdığınızda read only file group’unda online olduğunu göreceksiniz.
SELECT [name], [state_desc] FROM Test.sys.database_files;