Merhaba,

Aşağıda yayınladığımız script ile MsSql veri tabanlarınızın tümünü yedekleyip tarihe göre sıkıştırılmış hale getirir. 
İlgili alan değişiklerini (Set) leri kendinize göre düzenleyip bir bacth dosya halinde kaydedip Görev Zamanlayıcı ya günlük yedek alınmak üzere ekleyebilirsiniz.
Gerekli ek yazılım: 7za.exe

Yardım ihtiyacınız için destek[at]gul.net.tr ye mail atabilirsiniz. 11.09.2017


:::::: BAŞLANGIÇ
@ECHO OFF
SETLOCAL
:: Kaç günlük eski kayıtlar silinsin 

set retaindays=30
:: Zipper Atanması (Örn: F:Backup-zip-7za.exe)
set zipper="Zipleme Dosyası"
:: MsSQL sunucu ip si
SET "Sunucu=127.0.0.1" 

:: Yedekleme dizini (Örn: F:-Backup-MsSql)
SET "YedeklemeDizini=Yedekleme dizini" 

set "tarih=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%-%TIME:~0,2%-%TIME:~3,2%" 

REM Backup alınacak Veritabanı Listesini oluşturma 

SET DBList=%YedeklemeDizini%SQLDBList.txt 
:: Yedeklenmesini istemediğin veri tabanlarını ilave edeceğiniz yer
:: ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB','sysdb')

SqlCmd -E -S %Sunucu% -h-1 -W -Q "SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB','sysdb')" > "%DBList%" 

REM Yedekleme başlangıcı

FOR /F "tokens=*" %%I IN (%DBList%) DO ( 

ECHO Backing up database: %%I 

SqlCmd -E -S %Sunucu% -Q "BACKUP DATABASE [%%I] TO Disk='%YedeklemeDizini%\%%I_%tarih%.bak'" 

ECHO. 
REM Temp dosyanın silinmesi 
IF EXIST "%DBList%" DEL /F /Q "%DBList%" 


:: alınan yedeklerin zip hale getirlimesi, sıkıştırılmadan 
%zipper% a -tzip "%YedeklemeDizini%FullBackup.%tarih%.zip" "%YedeklemeDizini%*.bak"

echo "Tüm .sql dosyalarının silinmesi"
 
del "%YedeklemeDizini%*.bak"

echo "eski zip dosyalarının silinmesi retaindays tanımı yukarıda %retaindays% gün olarak ayarlandı"
Forfiles -p %YedeklemeDizini% -s -m *.* -d -%retaindays% -c "cmd /c del /q @path"

ENDLOCAL
::::::: BİTİŞ

Tasarım ve Yazılım : GülNet Gülnet Copyright 2017