it4it

Блог обо всем моем

Flower

Автоматический бэкап MS SQL 2005 Express базы

При переходе на новую программу на работе, перешли и на использование MS SQL Server, заместо FirebirdSQL и встал вопрос резервного копирования базы данных. Для этих целей в полной версии MS SQL используется встроенный планировщик, к сожалению, в Express версии его нету, поэтому пришлось использовать внешние средства Windows (планировщик) и командную строку с интерфейсом к MS SQL.
Весь процесс создания бэкапа разделен на 2 файла: backup.bat с командами Windows и MS SQL скрипт backup.sql, который содержит команды для бэкапа нашей базы.
Файл backup.sql содержит:

DECLARE @pathName NVARCHAR(512) 
SET @pathName = 'D:\mssqlbackup\db_backup_' + CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak' 
BACKUP DATABASE [db_name] TO DISK = @pathName WITH NOFORMAT, NOINIT, NAME = N'db_backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

где @pathName указывает путь сохранения, а также имя файла. В нашем случае, будет создаваться файл с именем db_backup_20082009 (если создавать бэкап 20 числа 8 месяца 2009 года), db_name – имя вашей базы

Файлик backup.bat:

sqlcmd -S SERVER -U USER -P PASSWORD -i backup.sql
"c:\Program Files\WinRAR\Rar.exe" a -m2 d:\mssqlbackup\db_backup_%date%.rar d:\mssqlbackup\db_backup_*.bak
del d:\mssqlbackup\db_backup_*.bak

где, SERVER – адрес сервера, USER – пользователь для подключения, PASSWORD – собственно пароль :)

Также, данный скрипт архивирует базу и оставляет только архив, убивая .bak

После создания этих двух файликов, кидаем их куда-нибудь вместе и в Windows планировщике создаем задание, раз в сутки (ну или когда хотите) запускать backup.bat

Тэги: , , , , ,