Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ::########################################################################################
- ::# #
- ::# Script de sauvegarde des Bases de donnees SQL Server #
- ::# 2010, Alter Systems #
- ::# Vincent Magnin - vincent.magnin@gmail.com #
- ::# #
- ::########################################################################################
- :Sauvegarde_BDD.bat
- @echo off
- Cls
- SetLocal EnableDelayedExpansion
- ::########################################################################################
- ::
- :: I - Variables de configuration du script
- ::
- ::########################################################################################
- :Variables
- set siteftp=intranet.altersystems.fr
- set userftp=intranet
- set mdpftp=afateb99
- set chemin_ftp_sauve=SaveSQLSERVER
- set chemin_ftp_sauve_MSSQLSERVER=MSSQLSERVER
- set chemin_ftp_sauve_SQLEXPRESS=SQLEXPRESS
- set chemin_local_sauve_temp=C:\TempBackupSQLSERVER
- set dossier_local_MSSQLSERVER_temp=MSSQLSERVER
- set dossier_local_SQLEXPRESS_temp=SQLEXPRESS
- set fichier_tmp_cmd_ftp=%chemin_local_sauve_temp%\ftp.cmd
- ::########################################################################################
- ::
- :: II - Fonction TestSQLEXPRESS qui va vérifier la presence d'une instance SQLEXPRESS
- ::
- ::########################################################################################
- :TestSQLEXPRESS
- FOR /F "usebackq tokens=1" %%a in (`reg query "HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL" ^| findstr /i /c:"SQLEXPRESS"`) do (
- if /i "%%a"=="SQLEXPRESS" (
- set sauvegardes=2
- ) else (
- set sauvegardes=1
- )
- )
- ::########################################################################################
- ::
- :: III - Fonction PrepareFTP qui va preparer les dossiers de reception des dumps
- ::
- ::########################################################################################
- :PrepareFTP
- echo open %siteftp% > %fichier_tmp_cmd_ftp%
- echo %userftp% >> %fichier_tmp_cmd_ftp%
- echo %mdpftp% >> %fichier_tmp_cmd_ftp%
- echo dir >> %fichier_tmp_cmd_ftp%
- echo quit >> %fichier_tmp_cmd_ftp%
- ftp -s:%fichier_tmp_cmd_ftp% > %chemin_local_sauve_temp%\ftp.result
- For /F "usebackq tokens=*" %%b in (`type %chemin_local_sauve_temp%\ftp.result ^| findstr /c:"%chemin_ftp_sauve%"`) do (
- set dossierexist=%%b
- if not "!dossierexist:~0,1!"=="d" (
- echo open %siteftp% > %fichier_tmp_cmd_ftp%
- echo %userftp% >> %fichier_tmp_cmd_ftp%
- echo %mdpftp% >> %fichier_tmp_cmd_ftp%
- echo mkdir %chemin_ftp_sauve% >> %fichier_tmp_cmd_ftp%
- echo quit >> %fichier_tmp_cmd_ftp%
- ftp -s:%fichier_tmp_cmd_ftp%
- )
- )
- echo open %siteftp% > %fichier_tmp_cmd_ftp%
- echo %userftp% >> %fichier_tmp_cmd_ftp%
- echo %mdpftp% >> %fichier_tmp_cmd_ftp%
- echo cd %chemin_ftp_sauve% >> %fichier_tmp_cmd_ftp%
- echo dir >> %fichier_tmp_cmd_ftp%
- echo quit >> %fichier_tmp_cmd_ftp%
- ftp -s:%fichier_tmp_cmd_ftp% > %chemin_local_sauve_temp%\ftp.result
- if "%sauvegardes%"=="2" (
- For /F "usebackq tokens=*" %%c in (`type %chemin_local_sauve_temp%\ftp.result ^| findstr /c:"%chemin_ftp_sauve%\%chemin_ftp_sauve_SQLEXPRESS%"`) do (
- set instanceexpressexist=%%c
- if not "!instanceexpressexist:~0,1!"=="d" (
- echo open %siteftp% > %fichier_tmp_cmd_ftp%
- echo %userftp% >> %fichier_tmp_cmd_ftp%
- echo %mdpftp% >> %fichier_tmp_cmd_ftp%
- echo cd %chemin_ftp_sauve% >> %fichier_tmp_cmd_ftp%
- echo mkdir %chemin_ftp_sauve_SQLEXPRESS% >> %fichier_tmp_cmd_ftp%
- echo quit >> %fichier_tmp_cmd_ftp%
- ftp -s:%fichier_tmp_cmd_ftp%
- )
- )
- )
- For /F "usebackq tokens=*" %%d in (`type %chemin_local_sauve_temp%\ftp.result ^| findstr /c:"%chemin_ftp_sauve%\%chemin_ftp_sauve_MSSQLSERVER%"`) do (
- set instanceexist=%%d
- if not "!instanceexpressexist:~0,1!"=="d" (
- echo open %siteftp% > %fichier_tmp_cmd_ftp%
- echo %userftp% >> %fichier_tmp_cmd_ftp%
- echo %mdpftp% >> %fichier_tmp_cmd_ftp%
- echo cd %chemin_ftp_sauve% >> %fichier_tmp_cmd_ftp%
- echo mkdir %chemin_ftp_sauve_MSSQLSERVER% >> %fichier_tmp_cmd_ftp%
- echo quit >> %fichier_tmp_cmd_ftp%
- ftp -s:%fichier_tmp_cmd_ftp%
- )
- )
- ::########################################################################################
- ::
- :: IV - Fonction Purge, pour vider les fichiers temporaires
- ::
- ::########################################################################################
- :Purge
- if exist %chemin_local_sauve_temp%\liste_BDD.txt (
- del %chemin_local_sauve_temp%\liste_BDD.txt
- )
- ::########################################################################################
- ::
- :: V - Fonction ListeBDDs qui va inscrire, puis trier proprement les BDD des instances
- ::
- ::########################################################################################
- :ListeBDDs
- if not exist %chemin_local_sauve_temp% (
- mkdir %chemin_local_sauve_temp%
- )
- if "%sauvegardes%"=="2" (
- if not exist %chemin_local_sauve_temp%\%dossier_local_SQLEXPRESS_temp% (
- mkdir %chemin_local_sauve_temp%\%dossier_local_SQLEXPRESS_temp%
- )
- set instance=.\SQLEXPRESS
- )
- if "%sauvegardes%"=="1" (
- if not exist %chemin_local_sauve_temp%\%dossier_local_MSSQLSERVER_temp% (
- mkdir %chemin_local_sauve_temp%\%dossier_local_MSSQLSERVER_temp%
- )
- set instance=.\
- )
- echo exit | osql -E -S %instance% -q "SELECT name FROM sys.databases" > %chemin_local_sauve_temp%\temp_BDD.txt
- FOR /F "usebackq tokens=1" %%e in (`type %chemin_local_sauve_temp%\temp_BDD.txt`) do (
- set nombdd=%%e
- if /i not "!nombdd!"=="name" (
- if /i not "!nombdd:~0,2!"=="--" (
- if /i not "!nombdd:~0,1!"=="(" (
- if /i not "!nombdd:~0,2!"=="1>" (
- echo !nombdd! >> %chemin_local_sauve_temp%\liste_BDD.txt
- )
- )
- )
- )
- )
- ::########################################################################################
- ::
- :: VI - Fonction SauveBDDs qui va sauvegarder localement chaque BDD récupérée
- ::
- ::########################################################################################
- :SauveBDDs
- FOR /F "usebackq tokens=1" %%f in (`type C:\liste_BDD.txt`) do (
- if "%sauvegarde%"=="2" (
- set fichierdump=%chemin_local_sauve_temp%\%dossier_local_SQLEXPRESS_temp%\%%f.dmp
- set cheminftpdump=%chemin_ftp_sauve%/%chemin_ftp_sauve_SQLEXPRESS%
- )
- if "%sauvegarde%"=="1" (
- set fichierdump=%chemin_local_sauve_temp%\%dossier_local_MSSQLSERVER_temp%\%%f.dmp
- set cheminftpdump=%chemin_ftp_sauve%/%chemin_ftp_sauve_MSSQLSERVER%
- )
- echo exit | osql -E -S %instance% -q "BACKUP DATABASE %%f TO DISK = '%fichierdump%'"
- echo open %siteftp% > %fichier_tmp_cmd_ftp%
- echo %userftp% >> %fichier_tmp_cmd_ftp%
- echo %mdpftp% >> %fichier_tmp_cmd_ftp%
- echo cd %cheminftpdump% >> %fichier_tmp_cmd_ftp%
- echo put %fichierdump% >> %fichier_tmp_cmd_ftp%
- echo quit >> %fichier_tmp_cmd_ftp%
- ftp -s:%fichier_tmp_cmd_ftp%
- del %fichierdump%
- )
- set /a sauvegardes-=1
- ::########################################################################################
- ::
- :: VII - Fonction Boucle qui redemarre la sauvegarde en cas de seconde instance
- ::
- ::########################################################################################
- :Boucle
- if "%sauvegardes%"=="0" (
- exit
- ) else (
- goto :Purge
- )
- EndLocal
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement