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

20.06.19

База данных - Архивирование (backup)

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

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

Наименование Файл Версия Размер
Скрипт для бэкапа базы данных
.sql 0,97Kb
7
.sql 0,97Kb 7 Скачать

Для автоматизации резервного копирования нужно написать 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 server express резервное копирование backup план обслуживания

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42516    10    24    

38

BackUPv8 - система резервного копирования баз 1С

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    14728    13    6    

18

Резервное копирование журнала транзакций, наконец-то!

Архивирование (backup) Администрирование СУБД Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    5864    n_mezentsev    15    

24

Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    19810    sapervodichka    36    

142

Архивирование базы в dt и дамп postgres

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    4714    2    Gnom-Gluck    6    

6

Утилита копирования баз данных 1С

Архивирование (backup) Платформа 1С v8.3 Абонемент ($m)

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4236    3    Giblarium    12    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ssn5810 79 23.06.19 16:51 Сейчас в теме
а Планы обслуживания в Microsoft SQL Server Management Studio чем не угодили ?
Bob_Dobr; Cifer; +2 2 Ответить
2. igordynets 87 24.06.19 14:14 Сейчас в теме
В редакции Express планы обслуживания недоступны, к сожалению) Поэтому и пришлось настраивать вручную.
3. aspirator23 339 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"
user1814032; plazotronik; +2 Ответить
5. aspirator23 339 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 210 30.07.20 09:48 Сейчас в теме
Мир этому дому!
Когда то давно писал заметку на подобную тему https://infostart.ru/public/140078/ - там другое решение.
9. пользователь 21.12.20 20:29
Сообщение было скрыто модератором.
...
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) Замени кавычки на нормальные.
14. user1773175 15.04.22 15:45 Сейчас в теме
12. user1521758 12.01.21 19:37

Сделай так:

del "D:\Backups\log.txt"
sqlcmd -S DESKTOP-P8UPLKQ\SQLEXPRESS -i "D:\Backups\backup_script_sportshop.sql" -o "D:\Backups\log.txt"
exit
15. mrnicos96 12.05.22 17:06 Сейчас в теме
Делал все по инструкции, но есть пара нюнсов:
1. Использовал автосгенирированый SQL макрос (указаный в статье не рабтает).
2. Для Bat файла использовал не много изменый код
sqlcmd -U <Username> -P <Password> -i C:\Backup\backup_script_Pyramid2_base.sql
Т. е. создал отдельное имя входа под backup в SQL Management Studio (безопасность/ имена для входа).
16. mrnicos96 12.05.22 17:09 Сейчас в теме
Делал все по инструкции, но есть пара нюнсов:
1. Использовал автосгенирированый SQL макрос (указаный в статье не рабтает).
2. Для Bat файла использовал не много изменый код
sqlcmd -U <Username> -P <Password> -i C:\Backup\backup_script_Pyramid2_base.sql
Т. е. создал отдельное имя входа под backup в SQL Management Studio (безопасность/ имена для входа).
Nowheree; +1 Ответить
17. user1974596 03.08.23 15:26 Сейчас в теме
Большое спасибо за статью! первый раз сталкиваюсь с подобной задачей, благодаря вашим подробным объяснениям все получилось
18. ravencrow 5 18.10.23 08:45 Сейчас в теме
После выполнения бэкапа, почему то не снимается блокировка базы в 1С и пользователей не пускает. Помогает только рестарт службы Агента сервера 1С.
Оставьте свое сообщение