Быстрое восстановление бэкапа на тестовую базу

12.02.19

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

Кто как восстанавливает свежие бэкапы на тестовые базы. Лично я довольно долго использовал для этого SQL скрипт. С ним меньше возни, чем с интерфейсом, который меняется из версии к версии. Кто-то использует bat файлы, тоже быстрый и надежный способ. В данной публикации я делюсь приложением, написанным на C#, которое восстанавливает базу из бэкапа, и даже при необходимости может перед восстановлением сохранить копию *.cf.

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

Наименование Файл Версия Размер
Архив с исходными файлами
.zip 910,60Kb
4
.zip 910,60Kb 4 Скачать
Архив с exe.
.zip 224,42Kb
5
.zip 224,42Kb 5 Скачать

Собственно довольно нехитрый инструмент, позволяющий быстро восстановить, свежий или на определенную дату, бэкап, на любую из тестовых баз. Также программка может перед восстановлением выгрузить конфигурацию БД в *.cf.

Важно: для выгрузки в cf, должен быть зарегистрированный объект COM 1С. 

И еще немного информации по настройкам. Некоторые настройки я не стал выводить в интерфейс так как у нас на предприятии они никогда не меняются. Так как те базы что чаще всего приходится восстанавливать имеют одни и те же параметры. Но если это необходимо - вывести в интерфейс большого труда не составит. Как будет возможность постараюсь доработать эти нюансы.

Собственно настройки хранятся в файле settings.xml

<?xml version="1.0" encoding="utf-8"?>
<PropsFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <User>SA</User>
  <Password>123</Password>
  <MainInstance>SQL_Server</MainInstance>
  <DefaultDB>IvanovTest</DefaultDB>
  <ConfigPath>C:\Program Files (x86)</ConfigPath>
  <BackUpPath>C:\Program Files</BackUpPath>
  <NeedSaveConfig>true</NeedSaveConfig>
  <EveryDayNewLogFile>false</EveryDayNewLogFile>
  <LogMainFileName>MainLog</LogMainFileName>
  <DataSourcePath>D:\MSSQL\DATA</DataSourcePath>
  <ComUser>ExtAdm</ComUser>
  <ComPass>123</ComPass>
  <LogicalDBName>upp_db</LogicalDBName>
  <LogicalDBLogName>upp_db_log</LogicalDBLogName>
</PropsFields>

Разберем по порядку. 

Параметры: User, Password, MainInstance, DefaultDB, ConfigPath, NeedSaveConfig, BackUpPath, DataSourcePath выведены в интерфейс и не требуют правки через XML.

А вот остальные сейчас расскажу для чего нужны.

EveryDayNewLogFile - Может иметь значение false или true. Обозначает необходимость каждый день писать логи в новый лог-файл. Если стоит истина, тогда каждый новый день создается новый лог файл. Имя файла содержит дату. Если нет, то всегда пишется в один файл.

LogMainFileName - Имя файла-лога, в который всегда будут писаться логи. Используется в том случае если предыдущий параметр равен false.

ComUser - Имя пользователя в ИС 1С. Тот пользователь под которым можно подключиться через COM соединение. 

ComPass - Пользователь для пользователя который был указан в предыдущем параметре.

LogicalDBName - Логическое имя файла базы данных

LogicalDBLogName - Логическое имя файла лога базы данных

Два последних параметра можно посмотреть через MS SQL Managments Studio, нажав правой кнопкой на базе данных, и выбрав пункт "Свойства". Во вкладке "Файлы", видны эти параметры. 

 

Программирование инструменты разработчик

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по 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    42514    10    24    

38

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

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

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

1200 руб.

03.09.2014    14726    13    6    

18

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

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

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

04.12.2023    5857    n_mezentsev    15    

24

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

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

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

07.10.2022    19797    sapervodichka    36    

141

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

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

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

1 стартмани

25.08.2022    4712    2    Gnom-Gluck    6    

6

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

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

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

1 стартмани

02.06.2022    4234    3    Giblarium    12    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Darklight 32 12.02.19 17:21 Сейчас в теме
Как мне кажется, для здешней адитории такое лучше на 1С писать (в виде внешней обработки, например) а не на C#, на крайняк на OneScript с подключенной библиотекой winforms

Да, и ещё довод в пользу более тесной интеграции с 1С - это ещё и считывание данных о подключении к СУБД из самой инфраструктуры 1С т.е. из кластера - чтобы надо было лишь выбрать ИБ откуда и ИБ куда (причём из списка, в котором сначала указаны кластеры, там же могут быть уже указаны и имеющиеся бэкапы (ну это отдельно настраивается для каждой ИБ и/или общим каталогом))! Вот тогда да - это было бы действительно "быстро" - но лишь по части GUI-взаимодействия, а не по части техники работы с самим бэкапом!

Да и зачем программе путь к файлам БД? Тем более, что это не обязан быть один каталог!
ixilimuse; +1 Ответить
2. ixilimuse 191 13.02.19 06:45 Сейчас в теме
(1)Безусловно Ваши доводы имеют основание, описанная Вами обработка была бы интересна как в написании так и в рассмотрении, возьму на заметку идею.

Данная утилитка разумеется написана во первых, забавы ради, во вторых, просто потому что я устал каждый раз в скрипте подменять наименование базы, путь к свежему бэкапу и т.п. Через интерфейс всегда был параноидальный страх забыть отметить какой-нибудь флажок или еще что напутать. Всегда по многу раз перепроверял, занимало много времени.
Как раз параллельно занимался другим проектом на C#+1С, поэтому решил смастерить по быстрому утилитку. Скорость исключительно в GUI-взаимодействии, как Вы правильно заметили.

Про путь к файлам БД, исключительно потому что я в своем скрипте (шаблонном) использовал эти пути. Тот самый скрипт был взят за основу программы.

RESTORE DATABASE [db_name] 
FROM  DISK = N'D:\Backup\SomeBackupFile.bak' 
WITH  FILE = 1,  
MOVE N'upp_SomeBase' TO 
N'D:\MSSQL\DATA\SomeBase_test.mdf',  
MOVE N'upp_SomeBase_log' TO 
N'D:\MSSQL\DATA\SomeBase_test_log.ldf',  
NOUNLOAD,  
REPLACE,  
STATS = 10
GO
Показать
3. Matveev_VS 159 14.02.19 13:25 Сейчас в теме
Подскажи, в чем именно ошибки при восстановлении ?

2019-02-14 01:11 > ViewDBList() error: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server не существует, или доступ запрещен.
2019-02-14 01:13 > ViewDBList() error: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server не существует, или доступ запрещен.
2019-02-14 01:16 > ViewDBList() error: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server не существует, или доступ запрещен.
2019-02-14 01:17 > TestConnection() error: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server не существует, или доступ запрещен.
2019-02-14 01:18 > TestConnection() error: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server не существует, или доступ запрещен.
2019-02-14 01:19 > Запускаем восстановление базы данных: buh3_ecodor_00
2019-02-14 01:19 > Восстанавливаем из файла: D:\Backup_SQL\buh_ecodor_00\buh_ecodor_00_backup_2019_02_12_05­0001_5847766.bak
2019-02-14 01:19 > RestoreDB() error: RESTORE DATABASE прервано с ошибкой.
Логический файл "upp_db" не является частью базы данных "buh3_ecodor_00". Используйте RESTORE FILELISTONLY для вывода списка имен логических файлов.
2019-02-14 01:24 > Запускаем восстановление базы данных: buh3_ecodor_00
2019-02-14 01:24 > Восстанавливаем из файла: D:\Backup_SQL\buh_ecodor_00\buh_ecodor_00_backup_2019_02_12_05­0001_5847766.bak
2019-02-14 01:24 > RestoreDB() error: RESTORE DATABASE прервано с ошибкой.
Логический файл "upp_db" не является частью базы данных "buh3_ecodor_00". Используйте RESTORE FILELISTONLY для вывода списка имен логических файлов.
ixilimuse; +1 Ответить
4. ixilimuse 191 15.02.19 06:41 Сейчас в теме
(3) Прошу прощения, сразу не описал, сейчас поправлю в статье.

1. Первые ошибки связаны вероятно с тем что не введен правильный пользователь и пароль для СУБД. Чаще всего пользователь SA и пароль какой был введен по умолчанию.
После того как введете нажмите "сохранить настройки" что бы при следующем запуске не было таких проблем.

2. Я забыл упомянуть что не все настройки выведены в интерфейс, так как не часто меняются в пределах одной компании. В xml файле, есть такой параметр как логическое имя БД. В MS SQL Managment Studio можно посмотреть вот тут, в свойствах базы:
Прикрепленные файлы:
5. Matveev_VS 159 15.02.19 15:26 Сейчас в теме
Оставьте свое сообщение