Db и Workspace

wowa

Well-known member
01.02.2007
845
0
#1
Получаю скриптом любую базу данных из директории.
Как определить, есть ли она у меня на Workspace?

Главная задача: удалить старые реплики, которых нет на WorkSpace.
 

wowa

Well-known member
01.02.2007
845
0
#2
И еще один вопрос. Мы имеем репликатор, где содержиться список реплик, реплицируются базы и т.д.... Как к ниму получить доступ и в частности получить список этих баз(реплик)?
 

nayke

Well-known member
04.08.2010
310
0
#3
И еще один вопрос. Мы имеем репликатор, где содержиться список реплик, реплицируются базы и т.д.... Как к ниму получить доступ и в частности получить список этих баз(реплик)?
Получение Реплик БД делал так.. хотя возможно есть стандартные решения
Из АК получаем список всех БД
Код:
Set db = ss.GetDatabase(CurrentServer,"names.nsf")
Set ServerCol=db.Search({form="Server"},Nothing,0)
с помощью метода OpenByReplicaID пробуем открыть БД на полученных серверах. Проверяем объект NotesDatabase is nothing.. и дальше делаем все что угодно(список серверов с репликами, изменение в бд реплики и т.д.)
 

nvyush

Lotus team
22.04.2009
2 317
0
#4
nayke
Не проще ли и быстрее взять из "names.nsf" представление "($Servers)", чем лопатить всю базу?
 

wowa

Well-known member
01.02.2007
845
0
#6
Получение Реплик БД делал так.. хотя возможно есть стандартные решения
Из АК получаем список всех БД
Set db = ss.GetDatabase(CurrentServer,"names.nsf")
Set ServerCol=db.Search({form="Server"},Nothing,0)

с помощью метода OpenByReplicaID пробуем открыть БД на полученных серверах. Проверяем объект NotesDatabase is nothing.. и дальше делаем все что угодно(список серверов с репликами, изменение в бд реплики и т.д.)
nayke , пару вопросов:

CurrentServer - Что это за сервер? мой локальный?

Не проще ли и быстрее взять из "names.nsf" представление "($Servers)", чем лопатить всю базу?
Открыл локальную базу, и не вижу вью "($Servers)", вижу: "($ServerAccess)" и "($ServerGroups)"
 

wowa

Well-known member
01.02.2007
845
0
#9
Получение Реплик БД делал так.. хотя возможно есть стандартные решения
Из АК получаем список всех БД
Set db = ss.GetDatabase(CurrentServer,"names.nsf")
Set ServerCol=db.Search({form="Server"},Nothing,0)

с помощью метода OpenByReplicaID пробуем открыть БД на полученных серверах. Проверяем объект NotesDatabase is nothing.. и дальше делаем все что угодно(список серверов с репликами, изменение в бд реплики и т.д.)
Не, все-таки мне это скорее всего не поможет. Попробую описать главную (серьезную проблему).

Есть база данных. Пользователь делает реплику, пользуется ею долгое время. Далее он ее удаляет неправильно, тупо на Workspace кликает delete на клаве и всё. Реплика, как вы понимаете, не была удалена и она не реплицируется.
Далее, база на сервере была перенесена в другое место либо не перенесена, я думаю не важно. И тут через несколько месяцев пользователь решает создать новую реплику. При создании лотус находит старую реплику и предлагает старый путь на компе. Пользователю обычно все равно где его реплика находится и нажимает ОК.
Тут главная ошибка, старая реплика начинает реплицироваться и получается очень много конфликтов, лишних документов и т.д....

Дак вот ищу как удалить на стороне пользователя эти старые реплики.

Более идеальный вариант - это найти список локальных баз по реплики и определить, есть ли значок этой базы на Workspace. Последний пункт я не знаю как реализовать. Думаю инфа храниться где-то в Bookmarks
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#10
Есть база данных. Пользователь делает реплику, пользуется ею долгое время. Далее он ее удаляет неправильно, тупо на Workspace кликает delete на клаве и всё. Реплика, как вы понимаете, не была удалена и она не реплицируется.
Далее, база на сервере была перенесена в другое место либо не перенесена, я думаю не важно. И тут через несколько месяцев пользователь решает создать новую реплику. При создании лотус находит старую реплику и предлагает старый путь на компе. Пользователю обычно все равно где его реплика находится и нажимает ОК.
Тут главная ошибка, старая реплика начинает реплицироваться и получается очень много конфликтов, лишних документов и т.д....

Дак вот ищу как удалить на стороне пользователя эти старые реплики.

Более идеальный вариант - это найти список локальных баз по реплики и определить, есть ли значок этой базы на Workspace. Последний пункт я не знаю как реализовать. Думаю инфа храниться где-то в Bookmarks
вы сами себе придумали геморой вот с этого места база на сервере была перенесена в другое место
Потому как если вы перенесли базу, то сделайте её КОПИЮ а не реплику, тогда всё будет тип-топ

другой вариант - запрет на создание реплики
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#11
есть метод - взять БД по репликИД
notesDatabase.OpenByReplicaID( server$, replicaID$ )
 

nvyush

Lotus team
22.04.2009
2 317
0
#12
Более идеальный вариант - это найти список локальных баз по реплики и определить, есть ли значок этой базы на Workspace. Последний пункт я не знаю как реализовать. Думаю инфа храниться где-то в Bookmarks
Насколько я помню, информация хранится в Desktop#.ndk. И, если не подводит мой склероз, поместить ярлык базы в рабочую область есть штатные методы, а вот докопаться до имеющихся ярлыков прямых путей нет.
 

wowa

Well-known member
01.02.2007
845
0
#13
вы сами себе придумали геморой вот с этого места база на сервере была перенесена в другое место
Потому как если вы перенесли базу, то сделайте её КОПИЮ а не реплику, тогда всё будет тип-топ
Дак особо разницы нет, перенесена база или нет. Пользователь удалил реплику, через месяц создал новую, а на самом деле открыл старую реплику

другой вариант - запрет на создание реплики
Нельзя. Пользуется весь мир, не у всех хорошая связь, да и база огромная, пару гигов.

есть метод - взять БД по репликИД
notesDatabase.OpenByReplicaID( server$, replicaID$ )
Пока я этим и пользуюсь. Загвоздка в том, вдруг это нормальная реплика, которая постоянно реплицируется и т.д... А мне надо найти старую, давно реплицирующуюся и удалить ее... Возможно есть какое-то свойство реплики, где указано как давно проходила репликация.