Advertisement
Guest User

Untitled

a guest
May 26th, 2017
527
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 17.99 KB | None | 0 0
  1. ::########################################################################################
  2. ::#                                                                                      #
  3. ::# Script de sauvegarde des Bases de donnees SQL Server                                 #
  4. ::# 2010, Alter Systems                                                                  #
  5. ::# Vincent Magnin - vincent.magnin@gmail.com                                            #
  6. ::#                                                                                      #
  7. ::########################################################################################
  8. :Sauvegarde_BDD.bat
  9. @echo off
  10. Cls
  11. SetLocal EnableDelayedExpansion
  12.  
  13.  
  14. ::########################################################################################
  15. ::
  16. :: I - Variables de configuration du script
  17. ::
  18. ::########################################################################################
  19. :Variables
  20. set siteftp=intranet.altersystems.fr
  21. set userftp=intranet
  22. set mdpftp=afateb99
  23. set chemin_ftp_sauve=SaveSQLSERVER
  24. set chemin_ftp_sauve_MSSQLSERVER=MSSQLSERVER
  25. set chemin_ftp_sauve_SQLEXPRESS=SQLEXPRESS
  26.  
  27. set chemin_local_sauve_temp=C:\TempBackupSQLSERVER
  28. set dossier_local_MSSQLSERVER_temp=MSSQLSERVER
  29. set dossier_local_SQLEXPRESS_temp=SQLEXPRESS
  30. set fichier_tmp_cmd_ftp=%chemin_local_sauve_temp%\ftp.cmd
  31.  
  32.  
  33. ::########################################################################################
  34. ::
  35. :: II - Fonction TestSQLEXPRESS qui va vérifier la presence d'une instance SQLEXPRESS
  36. ::
  37. ::########################################################################################
  38. :TestSQLEXPRESS
  39. FOR /F "usebackq tokens=1" %%a in (`reg query "HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL" ^| findstr /i /c:"SQLEXPRESS"`) do (
  40.                                                                                                                                                       if /i "%%a"=="SQLEXPRESS" (
  41.                                                                                                                                                                                   set sauvegardes=2
  42.                                                                                                                                                                                 ) else (
  43.                                                                                                                                                                                           set sauvegardes=1
  44.                                                                                                                                                                                        )
  45.                                                                                                                                                    )
  46.  
  47.  
  48. ::########################################################################################
  49. ::
  50. :: III - Fonction PrepareFTP qui va preparer les dossiers de reception des dumps
  51. ::
  52. ::########################################################################################
  53. :PrepareFTP
  54. echo open %siteftp% > %fichier_tmp_cmd_ftp%
  55. echo %userftp% >> %fichier_tmp_cmd_ftp%
  56. echo %mdpftp% >> %fichier_tmp_cmd_ftp%
  57. echo dir >> %fichier_tmp_cmd_ftp%
  58. echo quit >> %fichier_tmp_cmd_ftp%
  59. ftp -s:%fichier_tmp_cmd_ftp% > %chemin_local_sauve_temp%\ftp.result
  60.  
  61. For /F "usebackq tokens=*" %%b in (`type %chemin_local_sauve_temp%\ftp.result ^| findstr /c:"%chemin_ftp_sauve%"`) do (
  62.                                                                                                                          set dossierexist=%%b
  63.                                                                                                                          if not "!dossierexist:~0,1!"=="d" (
  64.                                                                                                                                                              echo open %siteftp% > %fichier_tmp_cmd_ftp%
  65.                                                                                                                                                              echo %userftp% >> %fichier_tmp_cmd_ftp%
  66.                                                                                                                                                              echo %mdpftp% >> %fichier_tmp_cmd_ftp%
  67.                                                                                                                                                              echo mkdir %chemin_ftp_sauve% >> %fichier_tmp_cmd_ftp%
  68.                                                                                                                                                              echo quit >> %fichier_tmp_cmd_ftp%
  69.                                                                                                                                                              ftp -s:%fichier_tmp_cmd_ftp%
  70.                                                                                                                                                            )
  71.                                                                                                                       )
  72.  
  73. echo open %siteftp% > %fichier_tmp_cmd_ftp%
  74. echo %userftp% >> %fichier_tmp_cmd_ftp%
  75. echo %mdpftp% >> %fichier_tmp_cmd_ftp%
  76. echo cd %chemin_ftp_sauve% >> %fichier_tmp_cmd_ftp%
  77. echo dir >> %fichier_tmp_cmd_ftp%
  78. echo quit >> %fichier_tmp_cmd_ftp%
  79. ftp -s:%fichier_tmp_cmd_ftp% > %chemin_local_sauve_temp%\ftp.result
  80.  
  81. if "%sauvegardes%"=="2" (
  82.                           For /F "usebackq tokens=*" %%c in (`type %chemin_local_sauve_temp%\ftp.result ^| findstr /c:"%chemin_ftp_sauve%\%chemin_ftp_sauve_SQLEXPRESS%"`) do (
  83.                                                                                                                                                                                 set instanceexpressexist=%%c
  84.                                                                                                                                                                                 if not "!instanceexpressexist:~0,1!"=="d" (
  85.                                                                                                                                                                                                                              echo open %siteftp% > %fichier_tmp_cmd_ftp%
  86.                                                                                                                                                                                                                              echo %userftp% >> %fichier_tmp_cmd_ftp%
  87.                                                                                                                                                                                                                              echo %mdpftp% >> %fichier_tmp_cmd_ftp%
  88.                                                                                                                                                                                                                              echo cd %chemin_ftp_sauve% >> %fichier_tmp_cmd_ftp%
  89.                                                                                                                                                                                                                              echo mkdir %chemin_ftp_sauve_SQLEXPRESS% >> %fichier_tmp_cmd_ftp%
  90.                                                                                                                                                                                                                              echo quit >> %fichier_tmp_cmd_ftp%
  91.                                                                                                                                                                                                                              ftp -s:%fichier_tmp_cmd_ftp%
  92.                                                                                                                                                                                                                           )
  93.                                                                                                                                                                               )
  94.                         )
  95.  
  96. For /F "usebackq tokens=*" %%d in (`type %chemin_local_sauve_temp%\ftp.result ^| findstr /c:"%chemin_ftp_sauve%\%chemin_ftp_sauve_MSSQLSERVER%"`) do (
  97.                                                                                                                                                        set instanceexist=%%d
  98.                                                                                                                                                        if not "!instanceexpressexist:~0,1!"=="d" (
  99.                                                                                                                                                                                                     echo open %siteftp% > %fichier_tmp_cmd_ftp%
  100.                                                                                                                                                                                                     echo %userftp% >> %fichier_tmp_cmd_ftp%
  101.                                                                                                                                                                                                     echo %mdpftp% >> %fichier_tmp_cmd_ftp%
  102.                                                                                                                                                                                                     echo cd %chemin_ftp_sauve% >> %fichier_tmp_cmd_ftp%
  103.                                                                                                                                                                                                     echo mkdir %chemin_ftp_sauve_MSSQLSERVER% >> %fichier_tmp_cmd_ftp%
  104.                                                                                                                                                                                                     echo quit >> %fichier_tmp_cmd_ftp%
  105.                                                                                                                                                                                                     ftp -s:%fichier_tmp_cmd_ftp%
  106.                                                                                                                                                                                                  )
  107.                                                                                                                                                      )
  108.  
  109.  
  110. ::########################################################################################
  111. ::
  112. :: IV - Fonction Purge, pour vider les fichiers temporaires
  113. ::
  114. ::########################################################################################
  115. :Purge
  116. if exist %chemin_local_sauve_temp%\liste_BDD.txt (
  117.                                                    del %chemin_local_sauve_temp%\liste_BDD.txt
  118.                                                  )
  119.  
  120.  
  121. ::########################################################################################
  122. ::
  123. :: V - Fonction ListeBDDs qui va inscrire, puis trier proprement les BDD des instances
  124. ::
  125. ::########################################################################################
  126. :ListeBDDs
  127. if not exist %chemin_local_sauve_temp% (
  128.                                           mkdir %chemin_local_sauve_temp%
  129.                                        )
  130.                                        
  131. if "%sauvegardes%"=="2" (
  132.                           if not exist %chemin_local_sauve_temp%\%dossier_local_SQLEXPRESS_temp% (
  133.                                                                                                     mkdir %chemin_local_sauve_temp%\%dossier_local_SQLEXPRESS_temp%
  134.                                                                                                  )
  135.                           set instance=.\SQLEXPRESS
  136.                         )
  137.  
  138. if "%sauvegardes%"=="1" (
  139.                           if not exist %chemin_local_sauve_temp%\%dossier_local_MSSQLSERVER_temp% (
  140.                                                                                                     mkdir %chemin_local_sauve_temp%\%dossier_local_MSSQLSERVER_temp%
  141.                                                                                                   )
  142.                           set instance=.\
  143.                         )
  144.  
  145. echo exit | osql -E -S %instance% -q "SELECT name FROM sys.databases" > %chemin_local_sauve_temp%\temp_BDD.txt
  146.  
  147. FOR /F "usebackq tokens=1" %%e in (`type %chemin_local_sauve_temp%\temp_BDD.txt`) do (
  148.                                                                                         set nombdd=%%e
  149.                                                                                         if /i not "!nombdd!"=="name" (
  150.                                                                                                                         if /i not "!nombdd:~0,2!"=="--" (
  151.                                                                                                                                                           if /i not "!nombdd:~0,1!"=="(" (
  152.                                                                                                                                                                                             if /i not  "!nombdd:~0,2!"=="1>" (
  153.                                                                                                                                                                                                                                echo !nombdd! >> %chemin_local_sauve_temp%\liste_BDD.txt
  154.                                                                                                                                                                                                                              )
  155.                                                                                                                                                                                          )
  156.                                                                                                                                                         )
  157.                                                                                                                      )
  158.                                                                                       )
  159.  
  160.  
  161. ::########################################################################################
  162. ::
  163. :: VI - Fonction SauveBDDs qui va sauvegarder localement chaque BDD récupérée
  164. ::
  165. ::########################################################################################
  166. :SauveBDDs
  167. FOR /F "usebackq tokens=1" %%f in (`type C:\liste_BDD.txt`) do (
  168.                                                                   if "%sauvegarde%"=="2" (
  169.                                                                                             set fichierdump=%chemin_local_sauve_temp%\%dossier_local_SQLEXPRESS_temp%\%%f.dmp
  170.                                                                                             set cheminftpdump=%chemin_ftp_sauve%/%chemin_ftp_sauve_SQLEXPRESS%
  171.                                                                                          )
  172.                                                                   if "%sauvegarde%"=="1" (
  173.                                                                                             set fichierdump=%chemin_local_sauve_temp%\%dossier_local_MSSQLSERVER_temp%\%%f.dmp
  174.                                                                                             set cheminftpdump=%chemin_ftp_sauve%/%chemin_ftp_sauve_MSSQLSERVER%
  175.                                                                                          )
  176.                                                                   echo exit | osql -E -S %instance% -q "BACKUP DATABASE %%f TO DISK = '%fichierdump%'"
  177.                                                                   echo open %siteftp% > %fichier_tmp_cmd_ftp%
  178.                                                                   echo %userftp% >> %fichier_tmp_cmd_ftp%
  179.                                                                   echo %mdpftp% >> %fichier_tmp_cmd_ftp%
  180.                                                                   echo cd %cheminftpdump% >> %fichier_tmp_cmd_ftp%
  181.                                                                   echo put %fichierdump% >> %fichier_tmp_cmd_ftp%
  182.                                                                   echo quit >> %fichier_tmp_cmd_ftp%
  183.                                                                   ftp -s:%fichier_tmp_cmd_ftp%
  184.                                                                   del %fichierdump%
  185.                                                                )
  186.  
  187. set /a sauvegardes-=1                                                              
  188.                                                              
  189.  
  190. ::########################################################################################
  191. ::
  192. :: VII - Fonction Boucle qui redemarre la sauvegarde en cas de seconde instance
  193. ::
  194. ::########################################################################################                                                              
  195. :Boucle
  196. if "%sauvegardes%"=="0" (
  197.                           exit
  198.                         ) else (
  199.                                   goto :Purge
  200.                                )
  201.  
  202.                                                                                                                                            
  203. EndLocal
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement