gifts2017

Выгрузка из конфигурации 1С: Предприятие 7.7 + SQL SERVER 2005 с работающими пользователями

Опубликовал Виталий Барилко (Diversus) в раздел Администрирование - Системное

Методика получения выгрузки средствами 1С, конфигурации 1С: Предприятие 7.7 + SQL SERVER 2005 с работающими пользователями.

Задача

Недавно у меня появилась задача автоматически получать выгрузку из конфигурации 1С: Предприятие 7.7 Конфигурация крутиться на SQL SERVER 2005. Причем нужна именно ВЫГРУЗКА полученная средствами 1С. В дальнейшем выгрузка используется другими сотрудниками, но для нашей задачи это неважно...

Итак, есть задача и есть проблемы:

1) База используется круглые сутки

2) Если выгнать всех пользователей из конфигурации, то выгрузка базы занимает около 30-40 минут, а это недопустимо...

3) Выгрузка должна осуществляться в атоматическом режиме

Мда... Как подойти к решению данной задачи? Изначально я хотел ночью, когда в базе меньше всего пользователей автоматически выгонять всех с помощью доделки в конфигурации и производить запуск выгрузки используя пакетный запуск 1С

Ну т.е. из командной строки запускать типа:

"d:\Program Files\1Cv77\Bin\1cv7s.exe" CONFIG /D\MyServerMyDB /NИмяПользователя /PПароль /@E:\Backup\ИмяФайлаПакетногоРежима

Но за простои в работе меня никто по головке не погладит, да и пользователи после того, как конфигурация их выкидывала начинали судорожно снова в нее заходить, а она их снова выкидывала, и т.д. и при запуске пакетного файла 1С, выгрузка вываливалась с ошибкой, что мол в базе все равно кто-то есть...

После долгого обдумывания проблемы появилось решение. Если вкратце: делаем копию папки с конфигурацией, делаем копию базы данных SQL SERVER средствами SQL SERVER, выполняем пакетный запуск 1С для выгрузки базы-копии, получаем выгрузку. Итак, подробно:

Решение:

Условно, введем обозначения:

PathWorkDB - путь к конфигурации 1С: Предприятия 7.7

WorkDB - работающая база данных SQL SERVER'a для конфигурации которая находится в PathWorkDB

PathTempWorkDB - путь к временной конфигурации-копии PathWorkDB и базой данных TempDB

TempDB - временная база данных SQL SERVER'a для конфигурации которая находится вPathTempWorkDB

Последовательность действий:

Шаг 1. Делаем резервную копию  рабоающей базы данных WorkDB средствами SQL SERVER (позволяет с работающей базой делать ее копию)

Шаг 2. Восстанавливаем резервную копию SQL SERVER в базу данных TempDB(тут уж нам все равно кто и с чем работает)

Шаг 3. Копируем все нужные файлы конфигурации из PathWorkDB в папку PathTempWorkDB (*.md, *.dds, *.cfg, users.usr)

Шаг 4. Запускаем выгрузку используя пакетный запуск 1С для конфигурации PathTempWorkDB (так как в базе Temp никто не работает, то в ней запуск в пакетном режиме спокойно будет работать сколько надо и как угодно долго)

Шаг 3 и Шаг 4 можно объединить, что мы и сделаем далее... Поместим всю эту последовательность действий в задание SQL SERVER'a

Создадим задание Агента SQL SERVER

Агент SQL SERVER > Задание > Создать задание.

На вкладке шаги создадим три шага (см. картинки и прикрепленные файлы). Установим расписание для задания и лучше его поставить ночью, т.к. нагрузка на SQL SERVER, меньше именно ночью.

Нюансы:

ВНИМАНИЕ: Попытайтесь проделать все это на других конфигурациях и базах SQL Server, где никто не будет работать.

Сначала необходимо проделать все операции вручную. Создать нужные папки, скопировать файлы, произвестим выгрузку, загрузку базы в SQL SERVER. ВАЖНО! Не забываем установить во временной конфигурации используемую БД - TempDB!!! Замечу: на шаге 3 мы не копируем файл *.dda - это файл с настройкам подключения к базе данных SQL SERVER. Мы его установим вручную, а потом не будем трогать.

Для создания резервной копии базы SQL SERVER'a лучше использовать "Устройство резервного копирования", пусть название не пугает, на самом деле это один файл куда записываются все резеврные копии. Создайте устройство:

Объекты сервера>Устройства резервного копирования>Создать устройство резерного копирования

У меня оно называется "Archive". В скриптах соответсвтенно это название и использвуется.

Запускать задание необходимо на машине с SQL SERER'ом.

Послесловие: 

Возможно это решение не единственное. Или его можно решить более красиво. Во всяком случае данное решение выполняет все предъявленные требования. Буду благодарен за любую конструктивную критику.

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

Наименование Файл Версия Размер Кол. Скачив.
Скрипт для выгрузки конфигурации из базы-копии
.vbs 2,81Kb
16.11.09
79
.vbs 2,81Kb 79 Скачать
Шаги для задания Агента SQL SERVER
.txt 0,61Kb
16.11.09
17
.txt 0,61Kb 17 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Зубцов (iov) 28.10.09 15:58
(0) вопрос что произойдет если в момент копирование выполнить действия записи/проведения/изменения/или иных действий изменяющих данные?
2. Виталий Барилко (Diversus) 28.10.09 17:05
Типы резервного копирования SQL Server 2005

... Конечно, полное резервное копирование, как и все другие типы резервного копирования, производится в оперативном режиме (online), без отключения пользователей... Обратите внимание на один момент, с которым часто возникает путаница. Предположим, что полное резервное копирование базы данных началось в 7 часов, а закончилось в 8. Данные по состоянию на какое время оказались помещены в резервную копию — на 7 или 8 часов?

Правильный ответ — на 8 часов. Действительно, в момент начала резервного копирования база данных стабилизируется (т. е. никакие изменения в ее файлы не вносятся для обеспечения целостности резервной копии). Однако после того, как перенос самой базы данных завершен, к резервной копии дописывается информация о всех изменениях, которые были внесены в базу данных во время резервного копирования, т. е. с 7 до 8 часов. При восстановлении резервной копии эта информация используется в автоматическом режиме. ... 


3. script Мальчинко (script) 28.10.09 20:07
Ани проще ли поднять УРБД и не морочить голову.
4. script Мальчинко (script) 28.10.09 20:11
Инструкция
1) Устанавливаем УРБД
2) Создаем одну перефирийную базу
3) Запускаем автообмен в пакетном режиме
4) Поскольку отчечать на выгрузку не будем т.е. загружать отчета от перефирийной не будем то база будет каждый раз выгружаться полная.
Еще можно поставить в нужных местах птички
А можно и настроить нормальный автообмен тогда процес выгрузки вообще будет занимать 5-10 сек.
5. Виталий Барилко (Diversus) 29.10.09 09:29
(4) +1 Это еще одно решение.
6. aspirator 23 (aspirator23) 04.11.09 09:01
Сам пользуюсь такой технологией, но вручную. Поэтому спасибо за скрипт. На MS SQL2000 будет работать?
7. Виталий Барилко (Diversus) 05.11.09 11:26
По идее все должно работать и на 2000
8. Алексей (1C_tradeomsk) 21.04.11 17:34
11. Сергей Смирнов (milanse) 13.08.12 15:41
(4) script, а разве уриб позволяет при работающих пользователях делать выгрузки ? вроде как в условиях задачи было что база работает непрерывно.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа