Windows

Sauvegarde complète du server SQL

Cet article va vous montrer comment créer une sauvegarde complète de votre serveur SQL. Nous allons utiliser la commande SQLCMD. Nous allons d’abord exporter la liste complète de la base de données dans un fichier csv. Notez que la sauvegarde de la base de données SQL ne peut être sauvegardée que localement. Vous ne pourrez pas la sauvegarder sur un serveur distant. Ainsi, une fois la sauvegarde terminée, je comparerai l’ancienne sauvegarde sur le serveur distant à la nouvelle sauvegarde locale. Nous allons tester fichier par fichier. En cas de changement, les fichiers seront transférés sur le serveur distant.

@echo off

set “ServerName=hit-servsql03”
set “BackupPath=c:\Temp\SQL\”
set “ServerPath=\\hit-servdata\Backup_HIT-SERVSQL03\”
set “CsvFileName=databaselist.csv”
set “ServerUserName=SQLBackup”
set “ServerUserPassword=H1Tsq1++2o55”

sqlcmd -s %ServerName% -U %ServerUserName% -P %ServerUserPassword% -Q “exit(SET NOCOUNT ON select db_name(dbid) a from sys.sysaltfiles Where db_name(dbid) IS NOT NULL)” > “%BackupPath%temp_db.csv”

for /f %%a in (%BackupPath%temp_db.csv) do (
findstr /ixc:”%%a” %BackupPath%%CsvFileName% || >> %BackupPath%%CsvFileName% echo.%%a

)

del %BackupPath%temp_db.csv

for /F “skip=2” %%a in (‘Type “%BackupPath%%CsvFileName%”‘) do (

sqlcmd -s %ServerName% -U %ServerUserName% -P %ServerUserPassword% -q “exit(BACKUP DATABASE %%a TO DISK = ‘%BackupPath%%%a.bak’ WITH NOFORMAT, INIT)”
sqlcmd -s %ServerName% -U %ServerUserName% -P %ServerUserPassword% -q “exit(BACKUP LOG %%a TO DISK = ‘%BackupPath%%%a_log.bak’)”

)

fc /b %BackupPath%%%a %ServerPath%%%a

if errorlevel 1 (
echo different
) else (
xcopy %BackupPath%%%a*.* %ServerPath% /s /d /y
)

)