Для начала я решил сделать SQL скрипт для создания backup'ов БД (создаем текстовый файл и пишем в нём содержимое скрипта), например:
BACKUP DATABASE [base1] TO DISK = 'D:\SQL_BackUp\base1.bak' WITH NOFORMAT, NOINIT, NAME = N'base1', SKIP, NOREWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [base2] TO DISK = 'D:\SQL_BackUp\base2.bak' WITH NOFORMAT, NOINIT, NAME = N'base2', SKIP, NOREWIND, NOUNLOAD, STATS = 10
или можно усложнить и добавить в название архива дату:
DECLARE @path NVARCHAR(512) SET @path = 'D:\SQL_BackUp\' + Convert(varchar(8), GETDATE(), 112) + '_base1.bak' BACKUP DATABASE [base1] TO DISK = @path WITH NOFORMAT, NOINIT, NAME = N'base1', SKIP, NOREWIND, NOUNLOAD, STATS = 10
Сохраняем файл как job.sql. Теперь можно делать скрипт для соединения с базой, отправкой на исполнение нашего скрипта job.sql и последующей архивацией полученных backup'ов в архив с удалением заархивированных backup'ов:
sqlcmd -S 1C-SQL -U user -P pass -i job.sql
"%ProgramFiles%\WinRAR\Rar.exe" a -df D:\SQL_BackUp\%date%.rar D:\SQL_BackUp\*.bak
где user и pass , логин и пароль пользователя имеющего доступ к MSSQL. Если скрипт выполняется на том же компьютере где стоит MSSQL, то можно логин пароль не указывать sqlcmd -S 1C-SQL -i job.sql. В качестве архиватора выбран WinRAR, но вы можете использовать и любой другой архиватор поддерживающий работу из консоли. Пути архивации конечно могут быть любые, в том числе и сетевые.
Сохраняем файл как mssql_backup.bat и скармливаем его в планировщик заданий Пуск->Панель управления->Планировщик заданий