• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Восстанавливаются удаленные документы

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

nayke

Ситуация вот какая. из базы А по фильтру копируются документы в созданную базу Б. Причем перед копированием меняется ReplicID, для дальнейшей репликации с репликами базы А. документы не подходящие по фильтру копируются окурками(создаются пустыми потом удаляются). Unidы документов сохраняются. Связь между базами репликами и базой Б есть. копирование выполняется верно,НО при запуске репликации в базе некоторые документы восстанавливаются(причем непонятно по какому критерию). Причем при разном фильтре документы восстанавливаются или не восстанавливаются по-разному. Может кто-то сталкивался с таким глюком?
 
N

nvyush

Может быть в какой-то из реплик "удалённые" в Б документы изменяются после удаления?
 
N

nayke

Репликация происходит непосредственно после процесса копирования. база-реплика не изменяется с момента запуска копирования. И еще с помошью scanEZ по unid проверил восстанавливающиеся документы после копирования содержаться в базе как окурки.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
несинхрон по времени сторон репликации м.б.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
чё-то я не догоняю идею копировать док, потом его удалять
естественно он восстановится, так как унид тот же и если в главной базе он меняется то и в реплике тоже пронаследуется
нифига это не восстановление
сделайте более умный фильтр для репликации, поле какое-нибудь наложите и вставте его в формулу репликации, тогда будет всё правильно
 
N

nayke

документ копируется+удаляется в главной базе. это операция нужна для создания окурков которые впоследствии призваны удалять эти документы на дочерних базах, а не возвращать их оттуда.. т.е. администратор главной базы обрезает главную базу по фильтру.. и при репликации также обрезаются дочерние..
 
N

nvyush

документ копируется+удаляется в главной базе. это операция нужна для создания окурков которые впоследствии призваны удалять эти документы на дочерних базах, а не возвращать их оттуда.. т.е. администратор главной базы обрезает главную базу по фильтру.. и при репликации также обрезаются дочерние..
Не понятно, какая из них главная — А или Б. Если нужно удалять документы во всех репликах, не проще ли вместо "скопировать в Б + удалить" непосредственно удалить в А?
 
N

nayke

База А занимает достаточно большой объем.. после удаления физический размер не меняется, а compact займет несколько суток.. поэтому было решено как бы подменить базу на новую... скопировать необходимые.
 
N

nvyush

Если из базы А в базу Б производится просто копирование (в т.ч. с созданием окурков для удаляемых документов) — то зачем их между собой реплицировать? Или проблема при репликации с базами на других серверах? Тогда см. пост 2, в реплицируемой базе документ обновлялся после удаления в базе Б. Других объяснений я не вижу.
 
N

nayke

Между собой Базы А и Б не реплицируются.
Алгоритм следующий:
1. Допустим есть База А(1000 документов) на сервере. Для нее на лок. комп. создаем реплику базу С.
2. Далее на базу А накатывается новый шаблон.. и из нее запускается процесс копирования.
3. Получили база Б с идентификатором реплики одинаковым с Базой С. База А имеет другой ReplicID
4. После этого имеем База Б 200 документов 800 окурков. База С не изменяемая с пункта 1 соответственно имеющая 1000 документов.
5. Запускаем репликацию на сервере в результате получаем База Б и База С становятся например 350 документов, 650 окурков.
 
N

nvyush

Попробуйте в удаляемые документы копировать поле $Revisions из оригинала.
 
N

nayke

Попробуйте в удаляемые документы копировать поле $Revisions из оригинала.

Попробовал. ничего не дало. У некоторых документов это поле вообще не заполнено.
Может еще что-нибудь может быть?


Выяснилось еще кое-что - документы действительно восстанавливаются из реплики. при проведении репликации от Базы на лок. комп. к серверной базы без передачи документов на сервер в локальной базе восстанавливающиеся документы остались.. но все даты (modified initialy,added in this file Modified in this file, accessed in this file) меньше даты и времени удаления. В базе на лок. компе просто остается документ, а на сервере документ с таким же unidом числится в stubs. Отличий от удаляемых документов найти не удалось. Почему документы могут не удаляться?
 
N

nvyush

Поле $ConflictAction имеется? Если да, то с каким значением?
 
N

nvyush

Попробуйте добавлять $ConflictAction со значением "2".
У меня недавно была проблема с репликацией документа между двумя серверами в кластере. У изменённого позднее документа был более ранний $Revisions (как такое случилось — понять не могу), в результате ни туда, ни сюда. Увеличил $Revisions — репликация в миг прошла, глазом моргнуть не успел.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Алгоритм следующий:
1. Допустим есть База А(1000 документов) на сервере. Для нее на лок. комп. создаем реплику базу С.
2. Далее на базу А накатывается новый шаблон.. и из нее запускается процесс копирования.
3. Получили база Б с идентификатором реплики одинаковым с Базой С. База А имеет другой ReplicID
4. После этого имеем База Б 200 документов 800 окурков. База С не изменяемая с пункта 1 соответственно имеющая 1000 документов.
5. Запускаем репликацию на сервере в результате получаем База Б и База С становятся например 350 документов, 650 окурков.
не понял шаг 3, как вы получили базу Б и почему у базы А вдруг стала другая репликИД?
 
N

nayke

не понял шаг 3, как вы получили базу Б и почему у базы А вдруг стала другая репликИД?

База Б создается программно. Затем меняется идентификатор реплики. и туда копируются документы (т.е. впринципе создаются в новой базе, меняется unid, и сохраняются).




Добавлено:
Попробуйте добавлять $ConflictAction со значением "2".
У меня недавно была проблема с репликацией документа между двумя серверами в кластере. У изменённого позднее документа был более ранний $Revisions (как такое случилось — понять не могу), в результате ни туда, ни сюда. Увеличил $Revisions — репликация в миг прошла, глазом моргнуть не успел.

ConflictAction="2" ничего не дал.. А как именно увеличивали $Revisions и чем это грозит если поле до заполнения пустое.
 
N

nvyush

А как именно увеличивали $Revisions и чем это грозит если поле до заполнения пустое.
Добавил более позднее значение "Волшебной кнопкой" (есть в КБ). Чем грозит — не знаю. Кстати, не совсем понял насчёт дат создания/модификации проблемных документов — дата удаления позже или раньше? Да, проверьте также наличие конфликтных документов, а то может быть "нормальные" документы удаляются, а конфликты реплицируются в "нормальные".
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
nayke
База Б создается программно. Затем меняется идентификатор реплики. и туда копируются документы (т.е. впринципе создаются в новой базе, меняется unid, и сохраняются).
какая-то белеберда получается
Сначала из базІ А делаете реплику базы С
потом программно создаёте базу Б(утверждая что репликаИД у неё драгая) НО её репликаИД совпадает с базой С
помоему все три базы имеют одну репликаИД и вы чего-то не понимаете
 
N

nayke

Добавил более позднее значение "Волшебной кнопкой" (есть в КБ). Чем грозит — не знаю. Кстати, не совсем понял насчёт дат создания/модификации проблемных документов — дата удаления позже или раньше? Да, проверьте также наличие конфликтных документов, а то может быть "нормальные" документы удаляются, а конфликты реплицируются в "нормальные".


Дата удаления позже. Конфликтных документов нет. Добавил более позднее значение "Волшебной кнопкой" (есть в КБ) - не понял а можно поподробнее..

Добавлено:
nayke

какая-то белеберда получается
Сначала из базІ А делаете реплику базы С
потом программно создаёте базу Б(утверждая что репликаИД у неё драгая) НО её репликаИД совпадает с базой С
помоему все три базы имеют одну репликаИД и вы чего-то не понимаете

для Базы А ReplicID=1
создали реплику для Базы А ReplicID=1 для Базы C ReplicID=1
База Б создается копированием из А, а не репликой(метод CreateCopy)
создали базу Б сразу после копирования для Базы Б ReplicID=2
меняем База А ReplicID=2 База Б ReplicID=1 потом копируем документы в Б
в результате
База А ReplicID=2
База Б ReplicID=1
Базы C ReplicID=1
 
Мы в соцсетях:

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