Обновление индекса базы.

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
31
Россея матушка!)
#1
Возможно ли программно обновить индекс всех представлений для пользователей у которых нет прав на обновление? кстати как определяются данные права? В настройка на сервере или по уровню доступа?
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
35
Москва
#2
Возможно ли программно обновить индекс всех представлений для пользователей у которых нет прав на обновление? кстати как определяются данные права? В настройка на сервере или по уровню доступа?
Можно написать агент, и подписать его сервером.
А дальше либо по расписанию его запускать, либо пользователь может запускать агент, который будет инициировать запуск агента от имени сервера.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#3
Можно написать агент, и подписать его сервером.
А дальше либо по расписанию его запускать, либо пользователь может запускать агент, который будет инициировать запуск агента от имени сервера.
А что в агенте?
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
35
Москва
#6
Код:
	Forall v In db.Views
Call v.Refresh ()
End Forall
Перестроит индексы видов, для их быстрого открытия, при наличии в базе большого кол-ва документов.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#7
Перестроит индексы видов, для их быстрого открытия, при наличии в базе большого кол-ва документов.
Не перестроит.
Кстати, я вопрос правильно понимаю? Что нужно перестроить индексы, а не обновить. Т.к. первое действительно требует прав.
И речь идет не про FT-индекс?
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
35
Москва
#8
Не перестроит.
Кстати, я вопрос правильно понимаю? Что нужно перестроить индексы, а не обновить. Т.к. первое действительно требует прав.
И речь идет не про FT-индекс?
Вы в праве конечно так думать, только я вам привожу пример рабочего кода, который это делает :)
Индекс видов конечно же он обновляет.

Для обновления FT индекса есть метод БД UpdateFTIndex.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#9
Вы в праве конечно так думать, только я вам привожу пример рабочего кода, который это делает smile.gif
Индекс видов конечно же он обновляет.
Всё-таки непонятно.
Обновление индексов происходит периодически и автоматически(если не задали другие настройки).
Перестроение индексов этот код не делает.
Тогда зачем он?
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
31
Россея матушка!)
#10
Ситуация такая, есть база, в которою из Excel загружаются данные, доступ к данным идет через портал. Как сразу после загрузки данных сделать чтобы на портале отобразилась корректная информация. Отображается она в представлении, следовательно нужно обновить данное представление) я правильно понимаю?)
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
35
Москва
#12
Всё-таки непонятно.
Обновление индексов происходит периодически и автоматически(если не задали другие настройки).
Перестроение индексов этот код не делает.
Тогда зачем он?
Смотри.
1. Получается, что индекс вида хранится на сервере (соответсвенно вида, хранящегося на сервере). И агент рефрешит именно этот серверный вид, т.е. перестраивает его серверный индекс.
2. FT индекс к этому индексу отношения не имеет.
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
31
Россея матушка!)
#15
У пользователя которые загружает данные нету прав на создание индекса) нужно обновить от имени другого пользователя)
Об этом и речь)
Нешедульный агент можно запустить от имени кого то другого?)))
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#16
У пользователя которые загружает данные нету прав на создание индекса) нужно обновить от имени другого пользователя)
Об этом и речь)
Нешедульный агент можно запустить от имени кого то другого?)))
Почему ты решил, что прав нет?
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
35
Москва
#17
У пользователя которые загружает данные нету прав на создание индекса) нужно обновить от имени другого пользователя)
Об этом и речь)
Нешедульный агент можно запустить от имени кого то другого?)))
Можно :)

Код:
	Const AgentName = <имя агента>

Dim ses As New NotesSession
Dim db As NotesDatabase


Set db = ses.CurrentDatabase
Set agent = db.GetAgent(AgentName)

If agent Is Nothing Then
Messagebox "Agent '" + AgentName + "' not found", 16, "Failure"
Else
If agent.RunOnServer = 0 Then
Messagebox "Agent '" + AgentName + "' ran", 64, "Success"
Else
Messagebox "Agent '" + AgentName + "' did not run", 16, "Failure"
End If
End If