1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Архивирование баз

Тема в разделе "Lotus - Программирование", создана пользователем drugsjoke, 9 июн 2007.

Статус темы:
Закрыта.
  1. drugsjoke

    drugsjoke Гость

    Репутация:
    0
    В общем есть агент который делает бэкап баз на серверах, появилось желание автоматом эти самые базы архивировать...
    коллекция доков с инфой о базах которые надо бэкапить берется из вида, базы копируются(не реплицируются), копия проходит вс ОК, но при архивации пишется что файл(уже скопированная база) используется приложением, т.е. агент держит инфу о них в себе, как этого избежать?????
    Помогите уже пол дня тыкаюсь :)
     
  2. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Репутация:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    639
    Симпатии:
    6
    не плохо бы на код посмотреть где происходит копирование, а затем архивация..<br>а вообще закрывать базы после копировани надо или удалять ссылки в коде на них..<br><br>
     
  3. morpheus

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.915
    Симпатии:
    1
    Для: drugsjoke
    да Kee_Keekkenen прав, стоит посмотреть не обнуля.ються ли привязки к БД ну т.п.,
     
  4. drugsjoke

    drugsjoke Гость

    Репутация:
    0
    Привязки не обнуляются в том то и дело, ну никак не могу понять как их обнулить
    Код:
    '---------------------------------------------------------------------------------------------------------
    ' Class collect - получения дока в котором хранится инфа для бэкапа 
    'и обработка его классом ArcdATABASE
    '---------------------------------------------------------------------------------------------------------
    
    Class collect
    Public doc As NotesDocument
    
    Private ArcDB As ArcDATABASE	
    
    Sub new 
    
    Dim s As New NotesSession
    Dim view As NotesView
    Dim Press As Pressing
    
    Set db=s.CurrentDatabase
    Set view = db.GetView("MainV")
    Set doc = view.GetFirstDocument	
    While Not(doc Is Nothing)		
    Set ArcDB = New ArcDATABASE(doc)
    Set doc = view.GetNextDocument(doc)
    Wend
    End Sub	
    End Class
    
    
    
    
    '---------------------------------------------------------------------------------------------------------
    ' Class ArcdATABASE - архивирование БД
    '
    '---------------------------------------------------------------------------------------------------------
    
    Class ArcDATABASE
    Public dbCopy As NotesDatabase	
    Public resultbase As String
    
    
    Private archiveDb As NotesDatabase
    Private ItemBase As NotesItem
    Private ItemPath As NotesItem
    Private ItemServ As NotesItem		
    
    
    
    Sub new (doc As NotesDocument)
    Call Me.init(doc)	
    Call CreatDir		
    Call arc		
    End Sub
    
    
    Sub init(doc As NotesDocument)
    Dim s As New NotesSession		
    
    Set ItemBase = doc.GetFirstItem("BaseNames")
    Set ItemPath = doc.GetFirstItem("Path")
    Set ItemServ = doc.GetFirstItem("Serv")
    Set dbCopy = s.GetDatabase(itemserv.Text,Itembase.Text)		
    End Sub
    
    
    Sub CreatDir
    Chdir (itempath.text)
    a$ = Str(Date-1)
    ZZZ = 	(Strrightback(a$,".20")+Strleft(Strright(a$,"."),".")+Strleft(a$,"."))			
    pathnames = ItemPath.Text + "\*.*"
    dirs = Dir(pathnames,16)		
    
    Do While dirs <> ""
    If	ZZZ = dirs Then
    Goto	gogogo
    End If
    
    dirs = Dir()
    Loop
    Mkdir ZZZ 
    gogogo:		
    End Sub
    
    Sub arc
    Dim doccoll As NotesDocumentCollection
    Dim docarc As NotesDocument		
    
    a$ = Str(Date-1)
    ZZZ = 	(Strrightback(a$,".20")+Strleft(Strright(a$,"."),".")+Strleft(a$,"."))
    resultbase = ItemPath.Text + "\" +ZZZ+"\"+ Strleft(dbcopy.FileName,".")+ZZZ+Strleft(itemserv.Text,"/")
    
    Set archiveDb = dbCopy.CreateCopy("",resultbase+".nsf")
    Set doccoll = dbCopy.AllDocuments
    Set docArc = doccoll.GetFirstDocument
    i=0	
    While Not docArc Is Nothing
    i=i+1			
    Print i			
    Call docArc.CopyToDatabase(archiveDb)
    Set docArc = doccoll.GetNextDocument(docarc)
    Wend
    End Sub
    End Class
    
    
    '---------------------------------------------------------------------------------------------------------
    ' Class Pressing - сжатие скопированной бд архиватором
    '
    '---------------------------------------------------------------------------------------------------------
    Class Pressing
    Public baseDoc As NotesDocument
    
    Sub new 
    Dim s As New NotesSession
    Dim view As NotesView
    Dim ItemBase As NotesItem
    Dim ItemPath As NotesItem
    Dim ItemServ As NotesItem		
    Dim dbCopy As NotesDatabase
    
    Set db=s.CurrentDatabase
    Set view = db.GetView("MainV")
    Set baseDoc = view.GetFirstDocument	
    While Not(baseDoc Is Nothing)		
    Set ItemBase = baseDoc.GetFirstItem("BaseNames")
    Set ItemPath = baseDoc.GetFirstItem("Path")
    Set ItemServ = baseDoc.GetFirstItem("Serv")	
    Set dbCopy = s.GetDatabase(itemserv.Text,Itembase.Text)	
    
    a$ = Str(Date-1)
    ZZZ = 	(Strrightback(a$,".20")+Strleft(Strright(a$,"."),".")+Strleft(a$,"."))
    resultbas = ItemPath.Text + "\" +ZZZ+"\"+ Strleft(dbcopy.FileName,".")+ZZZ+Strleft(itemserv.Text,"/")
    result = Shell("C:\rar.exe "+"m[f] -ep "+resultbas+" "+resultbas+".nsf", 6)	
    Set baseDoc = view.GetNextDocument(baseDoc)
    Wend
    End Sub	
    End Class
     
  5. drugsjoke

    drugsjoke Гость

    Репутация:
    0
    Ну ничего не получается :)
    добавил в классы Sub Terminate
    он обнуляет все что можно
    все переменные становятся = Nothing
    т.е агент выполняет строку типа a = Shell(архивирование) и поидее должен все базы "отпустить", но база все равно архивироваться не хочет, стереть ее невозможно, пишет, что она используется еще минут 5 после завершения работы агента.

    ЗЫ: При выполнении агента локально все ОК
    Когда запускаешь его на сервере происходит такая ерунда(((((((((( (сервер работает как служба, база сохраняется локально на нем)

    ПАМАГИТЕеееееее :D
     
  6. Domino6

    Domino6 Гость

    Репутация:
    0
    dbcreator
    Напиши .bat или .cmd и добавь после создания базы архивирование
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей