SQL Server’da Veritabanlarının Yedeğini Alıp 7-Zip Programı ile Sıkıştırmak

Herkese merhaba,

Bu yazıda SQL Server’da veritabanlarının yedeğini alıp 7-Zip ile sıkıştırmak hakkında bilgi vereceğim.

SQL Server’da veritabanlarınızın yedeğini almak oldukça önemlidir. Bu işlemi her gün elle yapabileceğiniz gibi joblar aracılığıyla planlayıp da yapabilirsiniz.

Aşağıdaki kod veritabanlarınızın yedeğini 7-Zip ile sıkıştırıp alacaktır. 7-Zip ile sıkıştırınca harddiskten de yer kazanmış olacak ve bu işlem için de ekstra efor sarfetmemiş olacaksınız.

Not : Büyük veritabanları üzerinde çok da verimli çalışmadığı görülmüştür. Bu yüzden test ederek denemenizi öneriyorum.

DECLARE @name VARCHAR(50);
DECLARE @path VARCHAR(256);
DECLARE @backupTime VARCHAR(50);
DECLARE @fileName VARCHAR(256);
DECLARE @fileDate VARCHAR(20);
SELECT @backupTime
    = 'Tarih-' + CONVERT(CHAR(10), GETDATE(), 105) + '-Saat-' + CAST(DATEPART(HOUR, GETDATE()) AS NVARCHAR(5));
SET @path = 'D:\Deneme\' + @backupTime + '\';
--Backup dosyasının oluşturulacağı klasörün yolunu burada belirliyoruz. 
EXEC master.sys.xp_create_subdir @path;
SELECT @fileDate = CONVERT(VARCHAR(20), GETDATE(), 113);
SELECT @fileDate = REPLACE(@fileDate, ' ', '_');
SELECT @fileDate = REPLACE(@fileDate, ':', '_');
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb', 'ReportServer$YAVUZSELIM', 'ReportServer$YAVUZSELIMTempDB' );
--Sistem veritabanları yedek listemizden çıkartıyoruz.   
OPEN db_cursor;
FETCH NEXT FROM db_cursor
INTO @name;
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @fileName = @path + @name + '_' + @fileDate + '.bak';
    BACKUP DATABASE @name TO DISK = @fileName;
    DECLARE @COMMAND NVARCHAR(500);
    SET @COMMAND = N'"C:\Program Files\7-Zip\7z" a ' + @fileName + N'.zip' + N' ' + @fileName + N'';
    --Programın yüklendiği dizin burada belirtiliyor. 
    EXEC xp_cmdshell @COMMAND;
    SET @COMMAND = N'DEL "' + @fileName + N'"';
    EXEC xp_cmdshell @COMMAND;
    FETCH NEXT FROM db_cursor
    INTO @name;
END;
CLOSE db_cursor;
DEALLOCATE db_cursor;

Yedek alınmasını istemediğiniz veritabanlarını belirttiğim kısımdan çıkarabilirsiniz. Ben örnek olması açısından bu şekilde yaptım. Lütfen kodu kendinize göre düzenlemeden kullanmayın! Dosya yolunuzu da kendinize göre ayarlayın. Ben D:\Deneme\ şeklinde belirttim.

Kodu çalıştırıp klasöre baktığınızda aşağıdaki gibi bir sonuç göreceksiniz.

Gördüğünüz üzere gün ve saat bazlı klasörledi.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

SQL Server Eğitimleri Kanalına Abone Olun

Şunlar makaleler de hoşunuza gidebilir

Ads Blocker Image Powered by Code Help Pro
Reklam Eklentisi Kullanıyorsunuz

Lütfen bizlere destek için reklam eklentisi olmadan sitemizi ziyaret edin.

Şimdiden teşekkür ederiz.