Программное Обновление Элементов Дизайна Бд

  • Автор темы Автор темы proteam
  • Дата начала Дата начала
а если через XML сравнить элементы дизайна?
выгрузить вручную из дизайнера.
Права видимости к элементам дизайна выставлены отдельно?
 
savl прав, можно через DXL попробовать (выгрузить дизайн в XML и глянуть, что там с элементами). Хотя... если в коллекцию не отбирается... Сдается мне, кто-то тут гадит. Антивирусы какие-нить под Домину, сторонние приблуды (типа той же ТимСтудио). Эффект от них бывает сложнопредсказуемый. Попробовать бы в чистой среде (чистые, пропатченные клиент и сервер)...
ЗЫ. По поводу выгрузки см. class DXLExporter.
 
Мыш
да зачем DXLExporter...
Надо выгрузить из Дизайнера, руками Tools- Export.
Из шаблона и из "базы-цели", которую хотите обновить и сравнить.

UPD: Я не предлагаю обновлять через XML, это ад... Просто сравнить, может флаги или поля служебные разные.
 
Мыш
да зачем DXLExporter...
Надо выгрузить из Дизайнера, руками Tools- Export.
Из шаблона и из "базы-цели", которую хотите обновить и сравнить.

UPD: Я не предлагаю обновлять через XML, это ад... Просто сравнить, может флаги или поля служебные разные.
Выгрузил я в dxl и первое впечатление
У элемента дизайна которого виден:
Код:
<noteinfo noteid='2ffa' unid='9F42E17BA67A855D46257B120031D0B8' sequence='1'>
<created><datetime>20130214T150406,96+06</datetime></created>
<modified><datetime>20130214T150407,02+06</datetime></modified>
<revised><datetime>20130214T150407,01+06</datetime></revised>
<lastaccessed><datetime>20130214T150407,02+06</datetime></lastaccessed>
<addedtofile><datetime>20130214T150407,02+06</datetime></addedtofile></noteinfo>

А теперь того элемента что скрыт для коллекции:

Код:
<noteinfo noteid='1946' unid='DC2BB46F511772F5462577BC00360BF7' sequence='-2147483561'>
<created><datetime>20101014T155020,07+06</datetime></created>
<modified><datetime>20130214T123638,78+06</datetime></modified>
<revised><datetime>20121029T175503,77+06</datetime></revised>
<lastaccessed><datetime>20130214T123638,78+06</datetime></lastaccessed>
<addedtofile><datetime>20130214T123638,78+06</datetime></addedtofile></noteinfo>

Параметр sequence у тех кто отображается равен положительному числу(в нашем случае 1), а у тех кто скрыт отрицательному(-2147483561)
 
хм.. всего лишь поле отвечающее за репликацию и сохранение...
Кривой элемент... как побился интересно... вырезать - вставить? Станет виден?
 
хм.. всего лишь поле отвечающее за репликацию и сохранение...
Кривой элемент... как побился интересно... вырезать - вставить? Станет виден?
Если скопировать элемент который не виден в другую БД и попробовать получить через NotesNoteCollection он становится видимым. Если честно уже устал от таких вот вещей лотуса, тот способ с крахом провалился, теперь тут вот такие проблемы. Не представляю, если бы сначала все получилось, а уже где нибудь при работе на реальных базах вышло что нибудь подобное(
 
Не представляю, если бы сначала все получилось, а уже где нибудь при работе на реальных базах вышло что нибудь подобное(
backup должен быть на такие случаи, тем более что его сделать непосредственно перед обновлением не сложно.

ты писал про Replace что "запуск локально агента прекрасно обновил БД." Почему бы не использовать его?
Пусть и локально, для первого раза, дизайн придет в порядок, а потом уже использовать первый способ.
 
backup должен быть на такие случаи, тем более что его сделать непосредственно перед обновлением не сложно.

ты писал про Replace что "запуск локально агента прекрасно обновил БД." Почему бы не использовать его?
Пусть и локально, для первого раза, дизайн придет в порядок, а потом уже использовать первый способ.
Когда дизайн накатываешь на такую кривую БД то это не спасает. Но почему то снимая шаблон с кривой БД и когда его накатываешь на нормальную БД то это тоже не влияет на нормальную БД.

Локальный запуск не пойдет, я ищу способ запуска на сервере, поэтому нужно кроссплатформенное решение
 
DamirUrazov
Зачем на сервере? Если тебе надо делать такие накаты периодично, то лучше настроить службу сервера для тиражирования дизайна, настроить все шаблоны.

У нас делается локально, на один сервак происходит накат, с этого сервака служба сама кидает на все реплики.
Если интересует вопрос подписи дизайна, то можно сервером подписать, сразу после локального обновления. причем программно.
Делается все это через наших админов, так как права у них, зато мы спокойны.
 
DamirUrazov
Зачем на сервере? Если тебе надо делать такие накаты периодично, то лучше настроить службу сервера для тиражирования дизайна, настроить все шаблоны.

У нас делается локально, на один сервак происходит накат, с этого сервака служба сама кидает на все реплики.
Если интересует вопрос подписи дизайна, то можно сервером подписать, сразу после локального обновления. причем программно.
Делается все это через наших админов, так как права у них, зато мы спокойны.
В общем по теме дизайна, с IBM ответили что это проблема в элементах дизайна, то что я показал sequence указывает что элемент поврежденный, он должен быть порядковым, а у меня кривой. Посоветовали найти бэкап с нормальными sequence. Либо вообще пересоздать. Я вспомнил что у нас была проблемка, когда у кого то клиент 8.5.3 у нас дизайн БД полетел как раз на этой базе где этот пользователь побывал, и IBM выпустили FP1 который это исправил. Скорее всего из-за этого и некоторые элементы дизайна повредились.
 
Ребята... вот накатил я шаблон, специально в шаблоне подписал элементы дизайна другой учеткой. После накатки шаблона смотрю дизайн БД и вижу, что элементы дизайна подписаны той самой другой учеткой.

Есть какой нибудь способ подписать элементы дизайна? У NotesDatabase есть метод Sign, но он доступен только на клиенте. На сервере не подписывает.

Кстати еще как можно дропнуть всех пользователей из бд?
 
Есть, через Admin process.
Код:
	If destServer = "" Or LCase(destServer) = "local" Then 
destServer = Db4Sign.Server ' Сервер на котором подписать
Else
Set Db4Sign = DBT_GetDbOnServer(ServerName,Db4Sign) ' получение DB на нужном сервере
End if

If Db4Sign Is Nothing Then Error 5001, "Не получена ИC для подписи на сервере: " & destServer

Set adminp = session.CreateAdministrationProcess(destServer)
noteid = adminp.SignDatabaseWithServerID(destServer,Db4Sign.Filepath)
 
>Кстати еще как можно дропнуть всех пользователей из бд?
Если совсем грубо и хватит прав, конечно :)
notesSession.SendConsoleCommand( serverName$, "drop all" )
serverName$ = "", если агент запускается на этом сервере. The Drop All command closes all existing sessions on the server.

Добавлено: еще после подписания можно попросить админпроцесс отработать - например, с помощью консольной команды tell adminp process all
 
Добавлено: еще после подписания можно попросить админпроцесс отработать - например, с помощью консольной команды tell adminp process all
Немного не понял, для чего нужно запускать эту консольную команду?
 
adminp.SignDatabaseWithServerID создает документ-запрос на подписание БД. Консольная команда просит задачу adminp его обработать, т.е. в данном случае начать подписание базы. Возможно, вместо process all надо указать process new, но я юзаю вариант All (привычка).
Tell Adminp Process All Processes all new and modified immediate, interval, daily, and delayed requests.
This command doesn't override timed requests execution time.
 
Код:
	On Error GoTo eh
Dim db As NotesDatabase
Dim s As New NotesSession
Dim destServer As String
Dim adminp As Variant
Dim noteid As Variant
Dim sr1 As String
Set db = s.Currentdatabase
Print "asdad"
destServer = db.Server

Set adminp = s.CreateAdministrationProcess(destServer)
noteid = adminp.SignDatabaseWithServerID(destServer,db.Filepath)
sr1 = s.Sendconsolecommand(destServer, {tell adminp process all})
ex:
Exit Sub 
eh:
Print Error + " on line "+CStr(Erl)
Resume ex

выдал ошибку (restricted operation on a server) при запуске на сервере на строке 13, то есть Set adminp = s.CreateAdministrationProcess(destServer)

запускаю на сервере. На клиенте отработал

Извиняюсь.... нужно было просто поправить права агенту, закладка Security
 
Мы в соцсетях:

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