Db и Workspace

  • Автор темы Автор темы wowa
  • Дата начала Дата начала
W

wowa

Получаю скриптом любую базу данных из директории.
Как определить, есть ли она у меня на Workspace?

Главная задача: удалить старые реплики, которых нет на WorkSpace.
 
И еще один вопрос. Мы имеем репликатор, где содержиться список реплик, реплицируются базы и т.д.... Как к ниму получить доступ и в частности получить список этих баз(реплик)?
 
И еще один вопрос. Мы имеем репликатор, где содержиться список реплик, реплицируются базы и т.д.... Как к ниму получить доступ и в частности получить список этих баз(реплик)?

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

с помощью метода OpenByReplicaID пробуем открыть БД на полученных серверах. Проверяем объект NotesDatabase is nothing.. и дальше делаем все что угодно(список серверов с репликами, изменение в бд реплики и т.д.)
 
nayke
Не проще ли и быстрее взять из "names.nsf" представление "($Servers)", чем лопатить всю базу?
 
Получение Реплик БД делал так.. хотя возможно есть стандартные решения
Из АК получаем список всех БД
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)"
 
Открыл локальную базу, и не вижу вью "($Servers)", вижу: "($ServerAccess)" и "($ServerGroups)"
Имеется ввиду серверная АК. В локальной и Set ServerCol=db.Search({form="Server"},Nothing,0) ничего не даст, ну нету там серверных документов.
 
Получение Реплик БД делал так.. хотя возможно есть стандартные решения
Из АК получаем список всех БД
Set db = ss.GetDatabase(CurrentServer,"names.nsf")
Set ServerCol=db.Search({form="Server"},Nothing,0)

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

Не, все-таки мне это скорее всего не поможет. Попробую описать главную (серьезную проблему).

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

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

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

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

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

другой вариант - запрет на создание реплики
 
есть метод - взять БД по репликИД
notesDatabase.OpenByReplicaID( server$, replicaID$ )
 
Более идеальный вариант - это найти список локальных баз по реплики и определить, есть ли значок этой базы на Workspace. Последний пункт я не знаю как реализовать. Думаю инфа храниться где-то в Bookmarks
Насколько я помню, информация хранится в Desktop#.ndk. И, если не подводит мой склероз, поместить ярлык базы в рабочую область есть штатные методы, а вот докопаться до имеющихся ярлыков прямых путей нет.
 
вы сами себе придумали геморой вот с этого места база на сервере была перенесена в другое место
Потому как если вы перенесли базу, то сделайте её КОПИЮ а не реплику, тогда всё будет тип-топ

Дак особо разницы нет, перенесена база или нет. Пользователь удалил реплику, через месяц создал новую, а на самом деле открыл старую реплику

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

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

есть метод - взять БД по репликИД
notesDatabase.OpenByReplicaID( server$, replicaID$ )

Пока я этим и пользуюсь. Загвоздка в том, вдруг это нормальная реплика, которая постоянно реплицируется и т.д... А мне надо найти старую, давно реплицирующуюся и удалить ее... Возможно есть какое-то свойство реплики, где указано как давно проходила репликация.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы