![]() |
![]() |
![]() |
|
Автоматический запуск архивирования/тестирования/исправления БД 1С 8.0 | ☑ | ||
---|---|---|---|---|
0
Evrepid
06.11.07
✎
12:49
|
Давно собирался написать не большой пост для тех кто занимается администрированием 1С или для тех кому по какой либо причине может понадобиться такая вешица.
Здесь не не буду обсуждать всех возможных способов выполнения автоматического архивирования/тестирования и т.д. А обратимся к тем возможностям которые предоставляет нам ОС Windows/DOS и сама 1С. Итак, задача автоматически выполнить архивирование, тестирование и исправление ИБ. Зачем? Для того что бы всегда иметь подрукой в нужном месте архив, что бы можно было откатиться без проблем или восстановиться при разрушении БД. (Считаем что БД работает с сервером 1С предприятия, файл серверный режим рассмотрим немного позднее) Первое что надо сделать это каким то образом отключить всех пользователей от БД, в случае если они к ней подключены. Для этого воспользуемся файлом написанным на VBS с примерно таким текстом (ConnectionOff.vbs): Dim Connector Set Connector = CreateObject("v8.ComConnector") DIM Server Set Server = Connector.ConnectServer("ServerName") Server.AddAuthentication "Robot", "robotpassword" Dim IBDESC Set IBDESC = Server.CreateInfoBaseInfo() IBDESC.Name = "DataBaseName" DIM Connections Connections = Server.GetIBConnections(IBDESC) rem Disconnect all users from data base Dim i Dim Connection For i = LBOUND(Connections) To UBound(Connections) Set Connection = Connections(i) If Connections(i).userName <> "Robot" then Server.Disconnect Connection end if Next rem Disconnect Robot Dim i Dim Connection For i = LBOUND(Connections) To UBound(Connections) Set Connection = Connections(i) Server.Disconnect Connection Next Собственно, почти весь текст принадлежит авторством А.Габец, за исключением небольшой доработки по проверке имени пользователя с администраторскими правами, что бы не отключить себя до момента отключения всех пользователей и тогда уж отключаем и себя. Ну еще парочка комментариев к тексту вместо Robot и Robotpassword указываем имя имя пользователя ИБ с администраторскими правами и его пароль, В место ServerName и DataBaseName указываем наименования Сервера 1С и имя базы данных 1С. Итак проверили убедились, что пользователи отключаются, а мы отключаемся от БД последними, приступаем к следующему шагу. Второе, что надо сделать это написать "bat" файл для запуска операций. Выглядеть это будет примерно так: (StartReserve.bat) @echo off rem rem File was created for automation reglametation operations with Data Base 1C rem rem Change current directory to C:\temp @Echo Change current dir to c:\temp cd c:\temp rem rem Disconnect All users from DataBase rem @echo Disconnect all user from DataBase @echo %Date% %Time% ConnectionOff.vbs rem rem Create variable for get string with date into rem set CurrentDate=%DATE% set CurrentTime=%TIME% rem rem Output text about reserve copy Data base rem set FileNameReserve=c:\temp\1C80_UPP_%CurrentDate:~8,2%%currentDate:~3,2%%currentDate:~0,2%_%CurrentTime:~0,2%%CurrentTime:~3,2%%CurrentTime:~6,2%.zip% if "%CurrentTime:~0,1%" == " " ( set FileNameReserve=c:\temp\1C80_UPP_%CurrentDate:~8,2%%currentDate:~3,2%%currentDate:~0,2%_0%CurrentTime:~1,1%%CurrentTime:~3,2%%CurrentTime:~6,2%.zip% @echo Variant 2 ) else (@echo Variant 1) @echo Create file reserve copy: %FileNameReserve% @echo Start:%DATE% %TIME% rem rem Make start up 1C with command reserve copy rem "C:\Program Files\1cv8\bin\1cv8.exe" config "/ServerName\DataBaseName /NRobot /Probotpassword /DisableStartupMessages /DumpIB%FileNameReserve%" || exit 1 rem rem Was Ok! rem @echo End :%DATE% %TIME% @echo Reserve copy was make. Ok! rem rem Output text about check and repair Data Base rem @echo Make Check and Repair Data Base. @echo Start:%DATE% %TIME% rem rem Make start up 1C with command check and repair rem "C:\Program Files\1cv8\bin\1cv8.exe" config "/SServerName\DataBaseName /NRobot /Probotpassword /DisableStartupMessages /IBCheckAndRepair -ReIndex -RecalcTotals -IBCompression -BadRefCreate -BadDateCreate" || exit 1 rem rem Was Ok! rem @echo End:%DATE% %TIME% @echo Check and Repair was make. Ok! rem rem rem Create variable for get ctring with date into rem set CurrentDate=%DATE% set CurrentTime=%TIME% rem rem Output text about reserve copy Data base rem set FileNameReserve=c:\temp\1C80_UPP_%CurrentDate:~8,2%%currentDate:~3,2%%currentDate:~0,2%_%CurrentTime:~0,2%%CurrentTime:~3,2%%CurrentTime:~6,2%.zip% if "%CurrentTime:~0,1%" == " " ( set FileNameReserve=c:\temp\1C80_UPP_%CurrentDate:~8,2%%currentDate:~3,2%%currentDate:~0,2%_0%CurrentTime:~1,1%%CurrentTime:~3,2%%CurrentTime:~6,2%.zip% @echo Variant 2 ) else (@echo Variant 1) @echo Create reserve copy after check and repair: %FileNameReserve% @Echo Start:%DATE% %TIME% rem rem Make start up 1C with command reserve copy rem "C:\Program Files\1cv8\bin\1cv8.exe" config "/SServerName\DataBaseName /NRobot /Probotpassword /DisableStartupMessages /DumpIB%FileNameReserve%" || exit 1 rem rem Was Ok! rem @echo End:%DATE% %TIME% @echo Reserve copy after check and repair was make. Ok! set CurrentDate= set CurrentTime= @echo ALL OPERATION WAS "OK". @echo on Собственно, что делает этот батник? Запускает файл с алгоритмом отключения пользователей, запускает 1С с праметрами резервного копирования, затем запускает 1С в режиме конфигуратор для выполнения тестирования/исправления БД, а затем еще раз делается резервная копия БД. Приэтом что бы небыло путаницы в файлах именя создаются с учетом даты и времении начала работы bat-файла. Теперь осталось сдлеать шаг третий, это создать на компьютере назначенное в планировщике задание и все. Команда для планировщика будет: StartReserve.bat>Result.txt для чего? для того что бы можно было в случае чего понять на выполнении какой операции произошел сбой выполнения bat файла. Желаю удачи в пользовании. |
|||
1
ТелепатБот
гуру
06.11.07
✎
12:49
|
||||
2
Agidel
14.12.07
✎
11:23
|
А где же обещанный файл серверный режим ?
Очень надо ;) |
|||
3
MaxS
14.12.07
✎
13:32
|
есть ещё один вариант - использование регламентных заданий 1С 8.1.
я сделал отдельную конфигурацию на сервере, которая занимается обслуживанием баз 1С 8.0. (1С81робот) Несколько месяцев работает, всё это время что-то дорабатывается, что-то лишнее в конфигурации отмирает и удаляется... скоро будет супер продвинутый робот... ... сейчас он умет: - запускать произвольные обработки 1С 8.0 в базе 1С 8.0 (например перепроведение всех документов с минимальной даты последовательности, если она не раньше даты запрета редактирования, устойчив к ошибкам проведения...ну это отдельная тема...) - запускать обработки в составе 1С81робот для обслуживания (например загружает в себя курсы валют, а потом через Comconnector раздаёт всем базам) - делать бэкап - обновлять конфигурацию (так же как F7) - перезагружать сервер 1С (идёт доработка анализа "а можно ли перезагрузить если работает такой-то пользователь...") - в планах научить его брать из хранилища конфигурацию, делать файл поставки и обновлять рабочую базу (предварительно делая все нужные бэкапы). в 1С81робот есть справочник баз, там все параметры - серверная или файловая, каталог бэкапов и т.д. в табличной части - расписания заданий... хотел бы увидеть подобные разработки, может кто слышал есть такие? ;) если доведу до ума свою, выложу куда-нибудь. ;) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |