• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

копирование документов

  • Автор темы nadezdaMP
  • Дата начала
N

nadezdaMP

задача: есть две базы, приемник и источник, необходимо из базы источника копировать документы в базу приемник. при копировании агентом произошла ошибка - не хватило места в приемнике, была установлена квота.
вопрос - как докопировать в базу только оставшиеся документы?

копировала методом Call doc.CopyToDatabase(db),
пробовала искать по unid ранее скопированные документы, но ругается что invalid universal ID, видимо после копирования в базу документа его unid меняется....

подскажите пожалуйста как лучше докопировать оставшиеся документы?
 

erdi

Green Team
20.08.2008
264
17
BIT
0
самый простой способ - удалить документы из БД приемник и заново скопировать из БД источник
в документе создай вычисляемое поле "ID" с формулой @if(id="";@Text(@DocumentUniqueID);id), тогда ты всегда сможешь обратиться в любой базе по этому полю и сравнить с другими документами
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
согласен, удаляйте всё что накопировали и заново но теперь с указанием ИД оригинала
 
A

Akupaka

копировала методом Call doc.CopyToDatabase(db),
а если сделать так:

Код:
dim sourceDb as NotesDatabase
dim sourceDoc as NotesDocument
dim targetDb as NotesDatabase
dim targetDoc as NotesDocument

set sourceDb = GetSourceDb()
set sourceDoc = sourceDb . GetSourceDocument

set targetDb = GetTargetDb()
set targetDoc = targetDb.CreateDocument
call sourceDoc.CopyAllItems(targetDoc, True)
targetDoc.UniversalID = sourceDoc.UniversalID
call targetDoc.Save(...)

то можно еще и в двух разных базах поиметь документы с одинаковыми унидами. иногда удобно :)
 

Andre

Green Team
29.07.2004
114
1
BIT
1
копировала методом Call doc.CopyToDatabase(db),
пробовала искать по unid ранее скопированные документы, но ругается что invalid universal ID, видимо после копирования в базу документа его unid меняется....


При использовании CopyToDatabase согласно IBM UNID не меняется, но только последние 16 символов из UNID. Первые 16 символов описывают replica id базы.
Подробности можно посмотреть

Итого: для поиска по unid ранее скопированных документов UNId необходимо собрать следующим образом:
replicaid базы приемника + последние 16 символов из оригинального UNID документа
 
N

nadezdaMP

как удлаить все документы из базы так чтобы сразу на совсем?
метод notesDocumentCollection.RemoveAll( force ) удалит только
если soft deletions не включены,
если soft deletions are enabled, the documents are available in a soft deletions view until removed from that view.

можно ли скриптом обойти это и грохнуть сразу?? как??

зы за предыдущие ответы спасибо!!!!
 
A

Akupaka

как удлаить все документы из базы так чтобы сразу на совсем?
пересоздай базу из шаблона

Call notesDocumentCollection.RemoveAll( force ) удаляет все, если параметр True. где ты про софт взяла? в какой версии?
только стабы останутся все-равно! хотя их тоже можно убить.

если база сама по себе, то пересоздать проще
 
O

Omh

Код:
Call Doc.RemovePermanently
Ещё формула есть кажется, что-то там
Код:
@HardDeleteDocument
 
T

TIA

Call doc.CopyToDatabase(db) преобразовывает UNIDы всех копируемых документов одинаковым образом. Что-то типа меняет первую часть UNID на часть от ReplicaId целевой БД. И если в целевой БД нет документа с получившимся UNID, то он и назначается копии. Т.о. если уточнить, какова закономерность изменения UNID при копировании, тогда можно определить какие документы исходной БД точно были скопированы. Остальные документы исходной БД (надеюсь, что их останется небольшой процент) можно определить сравнением полей.

Блин, пока писал, Andre уже тоже самое предложил
 
A

Akupaka

Т.о. если уточнить, какова закономерность изменения UNID при копировании, тогда можно определить какие документы исходной БД точно были скопированы
да, если разговор идет о кол-ве до ста, то я буду плакать ))
 
N

nadezdaMP

пересоздай базу из шаблона

Call notesDocumentCollection.RemoveAll( force ) удаляет все, если параметр True. где ты про софт взяла? в какой версии?
только стабы останутся все-равно! хотя их тоже можно убить.

если база сама по себе, то пересоздать проще

это в хелпе версии 8.5 написано, пор софт.

как убить стабы??? мне нужно точно - грохнуть документы, чтобы размер базы уменьшился,
чтобы было ясно что база без документов по ее размеру и что ее можно грохнуть)))
 
A

Akupaka

чтобы было ясно что база без документов по ее размеру и что ее можно грохнуть)))
эм... сначала грохнуть доки, потом проверить грохнулись ли, чтобы удалить базу? :) ;)

вот, только осторожно с этой фичей!!!
 
N

nadezdaMP

ясно, спасибо!!!
прошу прощения что сыплю вопросами,
но очень срочно надо -
можно ли из документа определить к какой папке или вью он принадлежит/(принадлежал)??
 
T

TIA

чтобы было ясно что база без документов по ее размеру и что ее можно грохнуть)))

По размеру БД не надёжно. От версии NSF зависит, от актуальности индексов видов и т.п.
Если у вас есть права ко всем документам БД лучше проверять Db.AllDocuments.Count = 0.
Кстати, если у копии документа получился такой же UNID, как у стаба, то стаб нормально перезатрётся. Т.е. для копии не будет подбираться другой UNID

Добавлено:
можно ли из документа определить к какой папке или вью он принадлежит/(принадлежал)??

Принадлежность к вьюшке определеяется селекшен-формулой вьюшки.

Принадлежность к папке можно определить только если включен notesDatabase.FolderReferencesEnabled (см. хелп про данное св-во)
 
K

Klido

Set notesView = notesDocument.ParentView - оно?
вид, из которого получен док, если он получен из вида... а вот как определить "принадлежал"? :)

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

Добавлено:
По размеру БД не надёжно. От версии NSF зависит, от актуальности индексов видов и т.п.
Если у вас есть права ко всем документам БД лучше проверять Db.AllDocuments.Count = 0.
ух. а кто мешает посмотреть в свойствах базы на 2-й вкладке кол-во документов?
 
K

Klido

программно одну единственную базку удалять? по-моему вы углубились не по-детски в LS :)
 
N

nadezdaMP

нет, баз около 3000 и скрипт будет использоваться не один раз)) ради одной я бы послала к админам и пусть разбираются))

ок, если допустим из базы был скопирован документ в другую базу, то можно из этого скопированного документа определить, к какой папке или виду он принадлежал до копирования из родитальской базы??? :newconfus:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!