Добрый день.
Возник такой вопрос - необходимо по расписанию производить сшивку сессий в пдмс (предварительно "выбить" оттуда всех пользователей) и произвести последующую архивацию проекта. Если с архивацией проекта у меня нет никаких проблем(bat файл написать могу), то вот с пониманием, как без участия пользователя производить expunge all users и сшивку баз проекта сложности. Хотел бы узнать такое вообще возможно?
Да, чтобы этим самому по утрам не заниматься. Нашел кое-что на сайте Aveva, теперь думаю как это применить. Так что если есть что по существу пишите. Разберусь сам- выложу сюда отчет. Вот что есть немного в тему [url=http://pml.dabacon.ru/]PML[/url] буду разбираться как прикрутить к моему случаю
 ïðèíöèïå õâàòèò è ýòîãî. íî ëó÷øå íàïèñàòü òàê
ADMIN
EXPUNGE
VAR !DBS COLL ALL DB
DO !X FROM 1 TO !DBS.SIZE()
!DBNA = !DBS[!X].DBREF().NAME.AFTER('/*')
EXPUNGE DB $!DBNA
HANDLE (1,271)(1,273)
ENDHANDLE
ENDDO
FINISH
Блин. достал меня этот сайт, из оперы кирилицу не понимает
1 Создайте батник со следующей строчкой C:\AVEVA\pdms11.6.SP4\pdms.bat TTY %1 SYSTEM/XXXXXX %2 $M/С:\aveva\kikall.pmlmac
измените ее под ваш пдмс.. путь пеменяйте. TTY означает запуск PDMS в консольном режиме дальше вход в pdms под фри юзером и дальше запуск файла макроса kikall.pmlmac со следующим содержимым:
ADMIN
EXPUNGE
FINISH
В принципе хватит и этого. но лучше написать так
ADMIN
EXPUNGE
VAR !DBS COLL ALL DB
DO !X FROM 1 TO !DBS.SIZE()
!DBNA = !DBS[!X].DBREF().NAME.AFTER('/*')
EXPUNGE DB $!DBNA
HANDLE (1,271)(1,273)
ENDHANDLE
ENDDO
FINISH
Вот что уменя получилось используя инфу с сайта авевы:
Я тут посмотрел что есть у Авевы на русском сайте, в итоге получил вот такое:
- Локальные папки на сервере, куда будем отчет формировать
!folders[1]='d:\log\night\database\'
!folders[1]='d:\log\night\piping\'
do !x from 1 to !folders.Size(
!fo = object file(‘$!folders[$!x]‘)
if (!fo.Exists().Not()) then
!comm = |SYSCOM ‘MKDIR $!folders[$!x]‘|
$!comm
endif
enddo
–Блок 1. EXPUNGE ALL CLAMILISTS/USERS BEFORE
–(УБРАТЬ ИЗ ПРОЕКТА ВСЕХ ПОЛЬЗОВАТЕЛЕЙ ПЕРЕД ПРОДОЛЖЕНИЕМ)
–Переходим в модуль Admin
ADMIN
–выполняем команду удаления
EXPUNGE
–проходим по всем базам данных и удаляем из клеймлистов
VAR !DBS COLLECT ALL DB
do!x from 1 to !DBS.Size()
!DBNA = !DBS[!X].Dbref().Name.After(‘/*’)
EXPUNGE DB $!DBNA
HANDLE (1,271)(1,273)
–если база не-MULTIWRITE или FOREIGN
ENDHANDLE
ENDDO
–Блок 2. CHECK DATABASES
–ПРОВЕРКА БАЗ ДАННЫХ
-собираем все базы и конструируем лог-файл
VAR !DBS COLL ALL DB
!outputLOG = object array()
!outputLOGFILE = object file(‘$!folders[1]‘ + ‘!TotalLOG-DB.log’)
ALPHA LOG/$!nfile OVER
!dbN = !DBS[!x].DbRef().Name.After(‘/*’)
–выполняем команду причем результаты будут записаны в спец.файл (первый лог)
CHECK DB $!dbN
ALPHA LOG END
–проверяем получившийся лог-файл
–на предмет нахождения фатальных ошибок
!logfile = object file(!nfile)
!logfileRead = !logfile.ReadFile()
if (!logfileRead[!logfileRead.Size() - 1].Matchwild(‘*Database has no structural errors*’).Not()) then
!outputLOG.Append(‘DBS $!dbName : обнаружены несоответствия.. Необходима проверка…’)
endif
do !y from 1 to !logfileRead.Size()
if (!logfileRead[!y].Matchwild(‘*invalid*’) OR !logfileRead[!y].Matchwild(‘*unknown*’)) then
!outputLOG.Append(‘DBS $!dbName : обнаружены несоответствия.. Необходима проверка…’)
SKIP
endif
enddo
enddo
–выводим результыта проверки первого лог-файла во второй лог файл
!outputLOGFILE.WriteFile(‘OVERWRITE’,!outputLOG)
–Блок 3. Подшивка сессий
–Не использовать если в проекте используется механизм работы с сессиями
–для анализа изменений, возврата, контроля работы пользователей или Global
–использовать только при необходимости уменьшения физического
–объема данных проекта на жестком диске)
ADMIN
VAR !DBS COLL ALL DB
do !x from 1 to !DBS.Size()
skip if (!DBS[!x].DbRef().Fore EQ ‘FOREIGN’)
!mergewhere = !DBS[!x].DbRef().Name.After(‘/*’)
MERGE CHAN $!mergewhere
HANDLE (1,18)(1,293)
–FOR FOREIGN
ENDHANDLE
enddo
finish
После всего этого планирую запускать архивацию батником.
ну это полный цикл ночной проверки. если вы делаете простой архив - то смысла в проверке баз нет, подшивка сессий повлияет только на размер баз.. на итоговый размер архива влияния особо не окажет. хотя может у вас другая итоговая цель
вот сайт ещё как раз по теме: [url=http://pml.dabacon.ru/]PML[/url]
Его московская техподдержка ведёт, полезная инфа бывает. Макросы ночного обслуживания готовые выложены.
А сшивку каждую ночь делать не очень полезно - потом историю редактирования элементов не увидишь...