Herkese merhaba,
Bu yazıda SQL Server’da veritabanlarının yedeğini alıp winrar 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 winrar ile sıkıştırıp alacaktır. Winrar ile sıkıştırınca harddiskten de yer kazanmış olacak ve bu işlem için de ekstra efor sarfetmemiş olacaksınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
DECLARE @VeritabaniAdi VARCHAR(50); DECLARE @DosyaYolu VARCHAR(256); DECLARE @YedeklemeTarihi VARCHAR(50); DECLARE @DosyaAdi VARCHAR(256); DECLARE @DosyaTarihi VARCHAR(20); SELECT @YedeklemeTarihi = 'Tarih-' + CONVERT(CHAR(10), GETDATE(), 105) + '-Saat-' + CAST(DATEPART(HOUR, GETDATE()) AS NVARCHAR(5)) + '-' + CAST(DATEPART(MINUTE, GETDATE()) AS NVARCHAR(5)); SET LANGUAGE turkish; SET @DosyaYolu = 'D:\Backup\' + @YedeklemeTarihi + '\'; EXEC master.sys.xp_create_subdir @DosyaYolu; SELECT @DosyaTarihi = CONVERT(VARCHAR(20), GETDATE(), 113); SELECT @DosyaTarihi = REPLACE(@DosyaTarihi, ' ', '-'); SELECT @DosyaTarihi = REPLACE(@DosyaTarihi, ':', '-'); DECLARE db_cursor CURSOR FOR SELECT name FROM master.dbo.sysdatabases WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb', 'ReportServer$YAVUZSELIMTempDB', 'ReportServer$YAVUZSELIM' ); --Yedek alınmasını istemediğimiz veritabanlarını bu listeden çıkarıyoruz. OPEN db_cursor; FETCH NEXT FROM db_cursor INTO @VeritabaniAdi; WHILE @@FETCH_STATUS = 0 BEGIN SET @DosyaAdi = @DosyaYolu + @VeritabaniAdi + '_' + @DosyaTarihi + '.BAK'; BACKUP DATABASE @VeritabaniAdi TO DISK = @DosyaAdi; DECLARE @COMMAND NVARCHAR(500); SET @COMMAND = N'"C:\Program Files\WinRAR\RAR" a ' + @DosyaAdi + N'.rar' + N' ' + @DosyaAdi + N''; EXEC xp_cmdshell @COMMAND, no_output; SET @COMMAND = N'DEL "' + @DosyaAdi + N'"'; EXEC xp_cmdshell @COMMAND, no_output; FETCH NEXT FROM db_cursor INTO @VeritabaniAdi; 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:\Backup\ ş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. Şimdi klasörümüzün içine bakalım.
Görüldüğü üzere 3 adet veritabanının yedeği alınmış oldu. Sizin daha az ya da daha çok veritabanınız olabilir. Burada bu işlemi yaparken büyük bir dikkat ve özen göstererek yapın.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
