Как настроить автоматическое резервное копирование в MS SQL SERVER EXPRESS

Публикация № 1063767

Администрирование - Администрирование данных 1С - Архивирование (backup)

бэкап администрирование sql server express резервное копирование backup план обслуживания

При использовании MS SQL Server редакции Express, которая является бесплатной, важно понимать, что она имеет ряд ограничений. Кроме того что размер базы данных при использовании MS SQL Server Express не может превышать 10 Гб, в составе этой редакции СУБД отсутствует SQL Server Agent, который позволяет создавать планы обслуживания баз данных для регулярного автоматического выполнения. В результате нет возможности автоматизировать резервное копирование базы данных штатными средствами. Однако выход из ситуации есть. В статье описана инструкция по настройке автоматического резервного копирования для MS SQL Server Express 2008.

Для автоматизации резервного копирования нужно написать sql скрипт. За основу можно взять скрипт, который выполняется при выполнении стандартной задачи — Создать резервную копию

Для этого нужно в SQL Management Studio кликнуть правой кнопкой по той базе данных, для которой нужно настроить резервное копирование. В контекстном меню перейти в Задачи — Создать резервную копию:

В открывшемся диалоговом окне нужно убедиться, что тип резервной копии стоит «Полная» (Full), при необходимости можно задать имя и описание, а также указать назначение резервной копии. По умолчанию выбран путь на жестком диске компьютера в папку Backup основного расположения баз SQL-сервера. Для того чтобы изменить место размещения копии, сначала надо нажать «Удалить» (Remove), чтобы удалить существующее назначение, а затем «Добавить» (Add…) для добавления нового.

Далее нужно на вкладке «Параметры» (Options), можно указать, что резервную копию необходимо проверить после выполнения, а также задать другие параметры надежности. Рекомендуется установить флаг «Проверить резервную копию после завершения»:

После этого нажимаем на кнопку Скрипт в верхней части формы и в результате откроется скрипт по созданию резервной копии с учетом произведенных на форме настроек:

Ниже приведен скрипт с учетом небольших корректировок: в имени файла добавляется дата создания бэкапа:

--path - переменная, в которой хранится путь к файлу бэкапа
--ШАГ 1 - Создание бэкапа в указанном каталоге
declare @path varchar(max)=N'F:\Backup\DATABASE_NAME_backup_'+convert(varchar(max),getdate(),112) + N'.bak'
BACKUP DATABASE [erp_base] TO  DISK = @path WITH NOFORMAT, NOINIT,  NAME = N'erp_base-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
--ШАГ 2 - Проверка резервной копии
declare @backupSetId as int
declare @path varchar(max)=N'F:\Backup\DATABASE_NAME_backup_'+convert(varchar(max),getdate(),112) + N'.bak'
select @backupSetId = position from msdb..backupset where database_name=N'erp_base' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'erp_base' )
if @backupSetId is null begin raiserror(N'Ошибка верификации. Сведения о резервном копировании для базы данных "erp_base" не найдены.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = @path WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO

Вместо DATABASE_NAME нужно указать имя вашей базы данных, а также указать свой путь к каталогу с файлами бэкапов.

Полученный скрипт нужно сохранить в файл sql с помощью команды Файл — Сохранить как:

В открывшемся диалоге нужно выбрать папку, в которую нужно сохранить скрипт:

Далее с помощью обычного блокнота нужно создать файл cmd следующего содержания:

del «F:\Backup\log.txt»
sqlcmd -S SERVER-2008R2\SQLEXPRESS -i F:\Backup\backup_script_erp_base.sql -o «F:\Backup\log.txt»
exit

Здесь:

  • SERVER-2008R2\SQLEXPRESS — путь к экземпляру сервера СУБД в формате ИмяСервера\ИмяЭкземпляра
  • backup_script_erp_base — имя файла, сохраненного на предыдущем шаге
  • F:\Backup\log.txt — в этот файл будет сохраняться журнал сообщений при выполнении резервного копирования. В случае возникновения ошибки, её можно будет увидеть в этом файле.

Проверяем работу созданного файла: кликаем по нему 2 раза и через некоторое время в каталоге должен появиться файл бэкапа. Если появился — двигаемся дальше. Если нет — нужно смотреть какие ошибки содержаться в log.txt и устранить их.

Далее переходим в планировщик windows. Для этого можно воспользоваться сочетанием клавиш Win + R (выполнить) и в появившемся окне ввести taskschd.msc:

В открывшемся окне переходим в меню Действия — Создать задачу и указываем имя задачи:

На закладке Триггеры настраиваем с какой периодичностью нужно выполнять задачу:

На заключительном этапе необходимо указать действие нашего задания, для этого необходимо перейти на складку «Действия» и нажать кнопку «Создать».

В данном примере действием будет запуск файла create_backup_erp_base.bat, который мы создавали ранее.

Сохраняем изменения с помощью кнопки OK. В результате в списке заданий планировщика появится назначенное задание:

На этом настройка автоматического резервного копирования базы данных для MS SQL Server Express завершена.

Таким образом, в этой статье мы пошагово разобрали процесс настройки автоматического резервного копирования базы данных при использовании MS SQL Server Express.

Скачать файлы

Наименование Файл Версия Размер
Скрипт для бэкапа базы данных

.sql 0,97Kb
3
.sql 0,97Kb 3 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ssn5810 80 23.06.19 16:51 Сейчас в теме
а Планы обслуживания в Microsoft SQL Server Management Studio чем не угодили ?
2. igordynets 24.06.19 14:14 Сейчас в теме
В редакции Express планы обслуживания недоступны, к сожалению) Поэтому и пришлось настраивать вручную.
3. aspirator23 456 10.08.19 13:46 Сейчас в теме
Еще бы добавить удаление старых архивов, чтобы не переполнить диск с архивами
4. 00tv 28.04.20 18:16 Сейчас в теме
(3) В батник строку добавить, в этом примере удаляются файлы старше 10 дней.
Изменить, указав свой путь, и количество дней на свое значение
Почему-то не дает вставить, и в *path собака вместо звездочки.
forfiles /p E:\BackUP_MSSQL\ /m *.bak /s /d -10 /c "cmd /c del *path /q"
5. aspirator23 456 28.04.20 21:14 Сейчас в теме
(4) Спасибо, нужная мелочь
6. user1420121 07.06.20 18:05 Сейчас в теме
Здравствуйте!
А как сделать так чтобы не запрашивал логин/пароль при выполнении данного скрипта? Никак не получается найти соответствующие настройки. Заранее спасибо!
8. 127.0.0.0 10.12.20 11:01 Сейчас в теме
(6)
создать отдельную админскую учетку и под ней запускать.
7. LexSeIch 209 30.07.20 09:48 Сейчас в теме
Мир этому дому!
Когда то давно писал заметку на подобную тему https://infostart.ru/public/140078/ - там другое решение.
10. plinth 7 21.12.20 20:30 Сейчас в теме
Спасибо, но у меня что-то скрипт ругался на *path, а вот такой код схавал
DECLARE *to varchar(100)
DECLARE *dbname varchar(100)
DECLARE *path varchar(400)
SET *dbname = "DB_name"
SET *to = "C:\Backup\"
SET *path = *to + *dbname + '_' +
cast(day(getdate()) as varchar(5)) + '.' +
cast(month(getdate()) as varchar(5)) + '.' +
cast(year(getdate()) as varchar(5)) + '-' +
replace(cast(CONVERT(varchar(8), GETDATE(), 108) as varchar(8))+ + '.bak', ':', '.')
BACKUP DATABASE *dbname TO DISK=*path WITH NOFORMAT, INIT, NAME = *dbname, SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
GO
Показать
11. yoops 26.12.20 22:55 Сейчас в теме
Спасибо большое за хорошо изложеный материал. Всё получилось!
12. user1521758 12.01.21 19:37 Сейчас в теме
У меня bat файл не создает ни бекап ни лог. Хотя скрипт работает.

del «D:\Backups\log.txt»
sqlcmd -S DESKTOP-P8UPLKQ\SQLEXPRESS -i D:\Backups\backup_script_sportshop.sql -o «D:\Backups\log.txt»
exit
13. Yurets_m 21.03.21 14:37 Сейчас в теме
(12) Замени кавычки на нормальные.
Оставьте свое сообщение

См. также

Циклический бэкап по дням недели Промо

Архивирование (backup) v7.7 v8 1cv8.cf 1cv7.md Россия Абонемент ($m)

В интернете часто можно встретить статьи о том, как написать скрипты для автоматического архивирования баз MSSQL. Методика, в них предлагаемая создает новый архив каждый новый день. Более подробно об этом можно почитать в http://outcoldman.ru/ru/blog/show/127 Я предлагаю незначительное усовершенствование скриптов и генерацию архивов по дням недели с циклической их перезаписью. Скрипт тоже не полностью мой, а скомпонован из различных примеров, найденных в интернете, но, надеюсь, именно представленный вариант будет полезен не только мне.

1 стартмани

15.06.2010    39792    milkers    15    

Бэкапирование внешних обработок на этапе разработки

Архивирование (backup) v8 1cv8.cf Россия Абонемент ($m)

Бэкапирование файлов внешних обработок 1С, и не только, с помощью самой 1С.

1 стартмани

03.06.2021    378    dmt    2    

Архивирование базы данных 1С средствами сервера

Архивирование (backup) v8 1cv8.cf Россия Абонемент ($m)

Практическое описание технологии архивирования файловой базы 1С средствами Windows Server 2008 R2.

1 стартмани

12.10.2020    865    zemskov    10    

Резервные копии SQL с помощью планировщика виндовс и скрипта

Архивирование (backup) v8 Абонемент ($m)

Всем привет! Сильно не судите, в основном я создаю эту статью для себя, чтобы не забыть об этом, сразу скажу, что я не программист, но по долгу работы приходится решать вопросы. В данной статье я покажу код батника, с помощью которого я делаю резервное копирование баз данных 1С посредством SQL.

1 стартмани

12.03.2020    3052    VID1234    15    

Резервное копирование и восстановление БД 1С 8.3 на PostgreSQL 11.5

Архивирование (backup) v8 1cv8.cf Абонемент ($m)

Резервное копирование баз данных 1С является обязательным, чтобы в случае непредвиденной проблемы всегда была возможность все восстановить. В статье мы рассмотрим, как произвести резервное копирование и восстановление из копии базы 1 8.3, работающей на PostgreSQL 11.5.

1 стартмани

30.01.2020    30014    ClickUp    47    

Исполняемый .bat файл для резервного копирования 1С

Архивирование (backup) v8 1cv8.cf Абонемент ($m)

Простейшее решение для выгрузки .dt, доступное любому пользователю 1С.

1 стартмани

14.05.2018    28092    SergPetr    32    

Восстановление данных из fullbackupdata Sony PC Companion. Часть 1: Телефонная книга

Архивирование (backup) Россия Абонемент ($m)

Друзья, довелось столкнуться с проблемой - есть телефон Sony с разбитым экраном, в котором осталась смс с очень важным номером телефона. Единственное, что удалось - сделать бэкап, подключив телефон к ноуту. И возник вопрос - что же делать дальше с файлами бэкапа, как из них получить в читабельном виде. "Простого" решения, чтобы восстановить данные, как оказалось, не существует. Но, существуют прекрасные люди, которые сделали целый урок по восстановлению данных из бэкап-файлов Android. Ниже перевод этой очень полезной статьи.

1 стартмани

13.01.2018    11825    user893870    0    

Быстро, дёшево и массово подстраховать базы клиентов от утери. Комплексная система удалённого резервного копирования

Архивирование (backup) Абонемент ($m)

Вы можете держать копии баз своих клиентов актуальными на своем backup-сервере. Rsync передаст только изменения базы, в связи с чем, передача данных произойдет самым рациональным способом. Обновление копии файловой базы происходит почти мгновенно, даже по низкоскоростным каналам связи. Вы сможете держать копии всех MSSQL баз на своём удалённом сервере с почасовой актуальностью. Как это сделать описываю в деталях. Систему можно использовать вообще для любых файлов. Если копия не обновляется заданное время - приходит оповещение об этом. Предыдущая версия уже несколько лет работает на локальном backup-сервере, который спасал мою честь несколько раз.

2 стартмани

14.11.2017    15456    ЕСТЬNULL    8