1. По адресу http://www.sqldbatips.com/showcode.asp?ID=26 скачиваем хранимую процедуру (или вот ). Она для 2005 сервера. Для 2008 на этом же сайте есть консольная программа, и примеры по её использованию. Я же здесь расскажу только о этой процедуре. После скачивания извлекаем из архива expressmaint.txt и запускаем на сервере. Я воспользовался MS SQL Management Studio.
2. С помощью этой процедуры можно делать следующие вещи:
- Создание полных архивных копий
- Создание разностных копий
- Создание копий лога
- Перестройка индексов
- Реорганизация индексов
- Проверка целостности баз
- Формирование отчетов о выполнении операций
Код: Выделить всё
exec expressmaint
@database = 'ALL_USER',
@optype = 'DB',
@backupfldr = 'D:\Backup\backups_sql',
@reportfldr = 'D:\Backup\reports_sql',
@verify = 1,
@dbretainunit = 'copies',
@dbretainval = 10,
@rptretainunit = 'copies',
@rptretainval = 10,
@report = 1
@optype - что нужно сделать.
- DB – создание полной резервной копии
DIFF – создание разностной резервной копии
LOG – создание копии лога
CHECKDB – проверка целостности
REINDEX – перестроить все индексы
REORG – реорганизовать все индексы
@reportfldr - путь к папке для сохранения логов.
@verify - проверять или нет файл резервной копии. Допустимые значения - 1 и 0 ( 1 - проверять, 0 - не проверять)
@dbretainunit - указывает единицы измерения следующего параметра @dbretainval. Может принимать значения
- minutes, hours, days, weeks, months, copies
@dbretainval - указывает период времени или количество старых архивных копий. В данном случае архивная копия лежит в указанной папке, пока не будет сделано ещё 10 бэкапов. Потом самая старая удаляется, и так по кругу. Как видите можно задать по вкусу.
@rptretainunit и @rptretainval тоже самое, но для логов.
@report - создавать ли отчёт о выполнении операции? (1 - да, 0 - нет)
Если у вас в настройке базы данных в recovery model стоит FULL (по умолчанию альта ставит SIMPLE), то нужно кроме базы сохранить и журналы логов. Для этого создаём файл full_log_backup.sql с таким-же содержанием, но только поставить параметр @optype = 'LOG'.
Теперь создаём файл full_db_backup.bat и в него прописываем
Код: Выделить всё
"C:\Program Files\Microsoft SQL Server\90\Tools\binn\SQLCMD.EXE" -i "D:\Backup\scripts_sql\full_db_backup.sql"
Такой-же батник создаём для full_log_backup.sql
Теперь нужно лишь периодически запускать эти бат-файлы. Для этих целей можно воспользоваться планировщиком Windows. Я же установил бесплатную программу Cobian Backup. При создании операции резервного копирования там можно указать разнообразные события. Для меня лучшим оказалось EXECUTE AND WAIT. т.е. я выбрал резервное копирование папки D:\Backup\backups_sql но перед этим cobian backup по очереди вызовет и дождётся выполнения моих bat-файлов для бэкапа базы. Затем вся папка сжимается в архив 7z и копируется в папку с бэкапами на локальном компьютере и в сетевую папку на другом компьютере. Очень удобно. Поэтому несмотря на то, что после 10 раз старые резервные копии удаляются из папки backups_sql, они остаются у меня в архивах. На всякий случай. Надеюсь кому-нибудь это пригодится.