мета-данные страницы
  •  

Это старая версия документа!


Удаление фото из базы данных

Планирование

Первым делом, необходимо обращение, в котором мы будем согласовывать с клиентом нюансы.Например:

  • Когда проводить работы;
  • Уточняем время Рабочего дня клиента;
  • Есть ли возможность занять начало рабочего дня, если вдруг удаление не успевает пройти;
  • Дату, до которой очищаем фото;

При планировании надо проверить:

  • Наличие свободного места для:
    • бэкапа базы с фото;
    • оптимизации(это минимум размер БД*3);
  • Наличие и правильность процедуры для удаления фото;
  • Отсутствие у клиента облачного хранилища или использования для хранения фотографий локального хранилища (Химчистка/Сервис/Другие сервисы/Настройка хранилища данных - на закладке «Локальное хранилище» не активен чекбокс «Включить хранение фото в локальном хранилище», на закладке «Облачное хранилище» не активен чекбокс «Активировано»). При наличии облачного или использовании для хранения фотографий локального хранилища удаление по сценарию, указанному в этой инструкции, не производить.

Подготовка

  1. Проверить наличие в БД процедуры SP_DEL_OLD_PHOTOS_DT. Для этого открываем IBExpert, в в поиск копируем название этой процедуры и убеждаемся в ее наличие

Перед удалением фото нужно переименовать и сделать копию БД с фото(для чего,думаю, понятно).

После этого, подключаемся к одной из БД в IBE. Сначала необходимо отключить триггер DOC_ORDER_SERV_PHOTOS_AD.

Если этого не сделать, то информация об удалении фото попадет в репликацию, что, свою очередь, очень сильно навредит клиенту и нам!
Как отключить? Находим наш триггер. Галка Is_Active стоит.
Снимаем ее и нажимаем на молнию (Compile Trigger) для того, что применить изменения.

Подготовка завершена.

Удаление фото

Теперь находим процедуру для удаления фото. В ней нас интересует блок

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

where dor.date_out_fact is not null and
      cast(dor.date_out_fact as date) > '12.02.2018' and  -- начало периода
      cast(dor.date_out_fact as date) < '06.03.2019' and  -- конец периода

В данном случае будут удалены фото с 12.02.2018 по 06.03.2019.

Обычно клиенты задают период до какой даты, например, до 01.01.2020. В этом случае мы комментирует строку начала периода, меняем дату конца периода и нажимаем молнию(Compile procedure), как в ситуации с триггером.

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

where dor.date_out_fact is not null and
      --cast(dor.date_out_fact as date) > '12.02.2018' and  -- начало периода
      cast(dor.date_out_fact as date) < '01.01.2020' and  -- конец периода


Выставили нужную дату и теперь нажимаем Execute Procedure(F9)

Время удаления зависит от размера БД, периода удаления фото и мощности ПК. И так, удаление завершилось.

Процедура отработала, но результат еще не закоммичен и его можно откатить
Результаты таковы:

Строка 1 пишет о том, что было удалено 3 фото из БД.

Встает вопрос, что показала 2я строка?

Она говорит о том, что в репликацию попадет 3 записи для удаления фото. ЕЕ БЫТЬ НЕ ДОЛЖНО!
Возникла она из-за того, что Вы не отключили триггер Выше! Нужно откатить изменение(как? укажу ниже) и вернуться в пункту «Подготовка»

В зависимости от результата, применяем или отклоняем изменения.

Завершение

После применения изменений, нужно включить триггер DOC_ORDER_SERV_PHOTOS_AD. Находим наш триггер. Ставим галку Is_Active и нажимаем на молнию (Compile Trigger) для того, что применить изменения.

На этом можно процесс удаления фото закончен. Далее необходимо:

  • Провести оптимизацию для уменьшения размера БД;
  • Вернуть БД в работу, если оптимизация запланирована на другой день.

Назад