Backup’ı birden fazla dosyaya bölerek farklı disklere almak

Veritabanı backup’ı bazı durumlarda çok büyük boyutlara ulaşabilir. Ve siz herhangi bir backup yazılımı kullanmıyorsanız backup’ı tek diske alamayabilirsiniz. Böyle bir durumda aşağıdaki script ile backup’ı parçalara ayırabilirsiniz.

 

Scriptte backup’ı 20 farklı diske 20 parçaya ayıracak şekilde alıyor ve daha sonra bu 20 parçayı kullanarak backup’ın doğruluğunu teyit ediyor. M harfi mounted disk’imizin ismi. Disk01,Disk02… olarak gördükleriniz ise M diskine Mount edilmiş diskleri gösteriyor. “Mounted Drive Nedir ve Nasıl Oluşturulur” isimli makalemde bu işlemin nasıl yapıldığını inceleyebilirsiniz.

 

DECLARE @tarih as varchar(10);
DECLARE @file1 varchar(50);
DECLARE @file2 varchar(50);
DECLARE @file3 varchar(50);
DECLARE @file4 varchar(50);
DECLARE @file5 varchar(50);
DECLARE @file6 varchar(50);
DECLARE @file7 varchar(50);
DECLARE @file8 varchar(50);
DECLARE @file9 varchar(50);
DECLARE @file10 varchar(50);
DECLARE @file11 varchar(50);
DECLARE @file12 varchar(50);
DECLARE @file13 varchar(50);
DECLARE @file14 varchar(50);
DECLARE @file15 varchar(50);
DECLARE @file16 varchar(50);
DECLARE @file17 varchar(50);
DECLARE @file18 varchar(50);
DECLARE @file19 varchar(50);
DECLARE @file20 varchar(50);
select @tarih= convert(varchar(10), getdate(), 120);
select @file1= N'M:\Disk01\myDatabaseBackup' + @tarih + '_1.BAK'
select @file2= N'M:\Disk02\myDatabaseBackup' + @tarih + '_1.BAK'
select @file3= N'M:\Disk03\myDatabaseBackup' + @tarih + '_1.BAK'
select @file4= N'M:\Disk04\myDatabaseBackup' + @tarih + '_1.BAK'
select @file5= N'M:\Disk05\myDatabaseBackup' + @tarih + '_1.BAK'
select @file6= N'M:\Disk06\myDatabaseBackup' + @tarih + '_1.BAK'
select @file7= N'M:\Disk07\myDatabaseBackup' + @tarih + '_1.BAK'
select @file8= N'M:\Disk08\myDatabaseBackup' + @tarih + '_1.BAK'
select @file9= N'M:\Disk09\myDatabaseBackup' + @tarih + '_1.BAK'
select @file10= N'M:\Disk10\myDatabaseBackup' + @tarih + '_1.BAK'
select @file11= N'M:\Disk11\myDatabaseBackup' + @tarih + '_1.BAK'
select @file12= N'M:\Disk12\myDatabaseBackup' + @tarih + '_1.BAK'
select @file13= N'M:\Disk13\myDatabaseBackup' + @tarih + '_1.BAK'
select @file14= N'M:\Disk14\myDatabaseBackup' + @tarih + '_1.BAK'
select @file15= N'M:\Disk15\myDatabaseBackup' + @tarih + '_1.BAK'
select @file16= N'M:\Disk16\myDatabaseBackup' + @tarih + '_1.BAK'
select @file17= N'M:\Disk17\myDatabaseBackup' + @tarih + '_1.BAK'
select @file18= N'M:\Disk18\myDatabaseBackup' + @tarih + '_1.BAK'
select @file19= N'M:\Disk19\myDatabaseBackup' + @tarih + '_1.BAK'
select @file20= N'M:\Disk20\myDatabaseBackup' + @tarih + '_1.BAK'

BACKUP DATABASE [mydatabase] TO  
DISK = @file1,  
DISK = @file2,  
DISK = @file3,  
DISK = @file4,  
DISK = @file5,  
DISK = @file6,  
DISK = @file7,  
DISK = @file8,  
DISK = @file9,  
DISK = @file10,  
DISK = @file11,  
DISK = @file12,  
DISK = @file13,  
DISK = @file14,  
DISK = @file15,  
DISK = @file16,  
DISK = @file17,  
DISK = @file18,  
DISK = @file19,  
DISK = @file20 
WITH NOFORMAT, NOINIT,  NAME = N'mydatabase-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 1;

declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'mydatabase' and backup_set_id=(select max(backup_set_id) 
from msdb..backupset where database_name=N'mydatabase' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''mydatabase'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  
DISK = @file1,  
DISK = @file2,  
DISK = @file3,  
DISK = @file4,  
DISK = @file5,  
DISK = @file6,  
DISK = @file7,  
DISK = @file8,  
DISK = @file9,  
DISK = @file10,  
DISK = @file11,  
DISK = @file12,  
DISK = @file13,  
DISK = @file14,  
DISK = @file15,  
DISK = @file16,  
DISK = @file17,  
DISK = @file18,  
DISK = @file19,  
DISK = @file20  
WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO

 

Loading

Leave Your Comment