Пакет / Скрипт для резервного копирования баз данных MSSQL

Я ищу создание пакетного сценария, который может создавать резервные копии моих баз данных MSSQL и удалять предыдущую архивную резервную копию, только если резервная копия всех баз данных, которая начинается с 'Avn', успешно создана (как Avn*.bak) в текущем процессе резервного копирования. Моя проблема в разделе УДАЛЕНИЕ БАК-ФАЙЛОВ.

Не могли бы вы мне помочь?

================================================== ==============

    @ECHO OFF
    SETLOCAL
    ECHO *** Script backup, Dec 2015 ***

    REM -------------------------- BACKING UP --------------------------------------------------
    REM Get date in format DDD-MM-YYYY (assumes the locale is the UK)
    set NowDate=%date:/=-%
    REM Build a list of databases to backup
    SET DBList=C:\Windows\Temp\SQLDBList.txt
    set cnt=0
    set dbnr=C:\Windows\Temp\nrdb.txt
    SqlCmd -E -S .\SQL1 -h-1 -W -Q "SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE substring(Name,1, 3) = 'Avn'" > "%DBList%"
    REM Backup each database, prepending the date to the filename
    FOR /F "tokens=*" %%I IN (%DBList%) DO (
    ECHO Backing up database: %%I
    SqlCmd -E -S .\SQL1 -Q "BACKUP DATABASE [%%I] TO Disk='D:\SQL2008\MSSQL10_50.SQL1\MSSQL\Backup\Automat\%%I.bak'  WITH INIT"
    ECHO.
    )

    REM -------------------------- DELETING BAK FILES---------------------------------------
       SqlCmd -E -S .\SQL1 -h-1 -W -Q "SELECT count (*) dbnumber FROM master.dbo.sysDatabases WHERE substring(Name,1, 3) = 'Avn'" > "%dbnr%"
    FOR %%a in (*.bak) do set /a cnt+=1
    echo file count = %cnt%
    IF  !%nrdb%! == !%cnt%!
    else exit 

forfiles /P "D:\SQL2008\MSSQL10_50.SQL1\MSSQL\Backup\Automat" /S /M *.* /C "cmd /c del @PATH"
        IF EXIST !%DBList%" DEL /F /Q "%DBList%"*
        REM -------------------------- ARCHIVING BACKUP ----------------------------------------------
        CLS
        ECHO Archiving backup files...
        "C:\Program Files\7-Zip\7z.exe" a -t7z "D:\SQL2008\MSSQL10_50.SQL1\MSSQL\Backup\Automat\Backup %NowDate%.rar" "D:\SQL2008\MSSQL10_50.SQL1\MSSQL\Backup\Automat" -x!*.rar
        REM -------------------------- CLEANING UP BACKUP --------------------------------------------
        ECHO Cleaning up backup files...
        forfiles /P "D:\SQL2008\MSSQL10_50.SQL1\MSSQL\Backup\Automat" /S /M *.bak /C "cmd /c del @PATH"

0 ответов

Другие вопросы по тегам