Подшивка и backup проектов в автоматическом ре

 
  • Добрый день.
    Возник такой вопрос - необходимо по расписанию производить сшивку сессий в пдмс (предварительно "выбить" оттуда всех пользователей) и произвести последующую архивацию проекта. Если с архивацией проекта у меня нет никаких проблем(bat файл написать могу), то вот с пониманием, как без участия пользователя производить expunge all users и сшивку баз проекта сложности. Хотел бы узнать такое вообще возможно?
  • Добрый день,
    а в темное время суток, когда все пользователи уже крепко спят по домам?
  • Да, чтобы этим самому по утрам не заниматься. Нашел кое-что на сайте Aveva, теперь думаю как это применить. Так что если есть что по существу пишите. Разберусь сам- выложу сюда отчет. Вот что есть немного в тему [url=http://pml.dabacon.ru/]PML[/url] буду разбираться как прикрутить к моему случаю
  • 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
  • Блин. достал меня этот сайт, из оперы кирилицу не понимает

    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’)

    VAR !mdbn MDB
    –команда задания опций проверки
    CHECKOPTION EXT CHECK PREF $!mdbn

    do !x from 1 to !DBS.Size()
    –пропускаем если база является Foreign
    skip if (!DBS[!x].DbRef().Fore EQ ‘FOREIGN’)
    !dbName = !DBS[!x].DbRef().Name

    !nfile = ‘$!folders[1]‘ & !DBS[!x].DbRef().Name.After(‘/*’).Replace(‘/’,'!’) & ‘.txt’

    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]
    Его московская техподдержка ведёт, полезная инфа бывает. Макросы ночного обслуживания готовые выложены.

    А сшивку каждую ночь делать не очень полезно - потом историю редактирования элементов не увидишь...
  • а, блин, вы на него и ссылаетесь :)