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

12.02.19

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Архив с исходными файлами
.zip 910,60Kb
4
4 Скачать (1 SM) Купить за 1 850 руб.
Архив с exe.
.zip 224,42Kb
5
5 Скачать (1 SM) Купить за 1 850 руб.

Собственно довольно нехитрый инструмент, позволяющий быстро восстановить, свежий или на определенную дату, бэкап, на любую из тестовых баз. Также программка может перед восстановлением выгрузить конфигурацию БД в *.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, нажав правой кнопкой на базе данных, и выбрав пункт "Свойства". Во вкладке "Файлы", видны эти параметры. 

 

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

См. также

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

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    72788    625    45    

84

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

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

1200 руб.

03.09.2014    15705    21    6    

27

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

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

04.12.2023    9426    n_mezentsev    15    

27

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

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

07.10.2022    28599    sapervodichka    37    

147

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

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

1 стартмани

25.08.2022    5732    3    Gnom-Gluck    6    

7

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

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

1 стартмани

02.06.2022    4689    3    Giblarium    12    

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

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

Да и зачем программе путь к файлам БД? Тем более, что это не обязан быть один каталог!
ixilimuse; +1 Ответить
2. ixilimuse 193 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 165 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 193 15.02.19 06:41 Сейчас в теме
(3) Прошу прощения, сразу не описал, сейчас поправлю в статье.

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

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