Быстрое обезличивание информационной базы

Обработка для формирования SQL-скрипта для быстрого обезличивания и очистки данных.

Предлагаю вашему вниманию внешнюю обработку-конструктор для подготовки SQL-скрипта, который может

  • Очищать текстовые реквизиты
  • Заменять значение текстовых реквизитов на GUID
  • Удалять таблицы

При первом открытии надо нажать кнопку "Заполнить дерево МД". В дерево попадут:

  • все объекты, имеющие табличную сущность: основные реквизиты, табличные части, изменения…
  • все реквизиты, имеющие текстовый тип данных

Ставим где нужно флаг "Кодировка" и выбираем доступное для объекта действие. В поле "Запрос SQL" будет появляться собственно сам текст запроса. 

Текст можно скопировать и выполнить в SQL Server Management Studio, не забыв при этом указать целевую базу. Длительность работы скрипта исчисляется минутами, а не часами и днями, если делать то же самое средствами платформы. В скрипте применяются команды UPDATE и TRUNCATE TABLE.

Настройки можно сохранить в файл и восстановить.

Обработка тестировалась на платформе 8.3.12.1567.

В качестве дисклаймера:

  • перед запуском скрипта еще раз тщательно проверьте, что указана правильная база. И эта база точно не продуктив (!), а копия, которую вы решили передать внешнему миру. И сделайте полную копию,  т.к. TRUNCATE TABLE — быстро чистит таблицу, но не оставляет следов в журнале транзакций, так что в случае чего откатить не удастся.
  • обработка сама не меняет данные, полученный скрипт не меняет структуру, но всё же вносит изменения в содержимое базы данных нештатными средствами, поэтому — применяя скрипт к 1С-базе вы нарушаете лицензионное соглашение!
  • возможно кто-то скажет, что это реплика, так и есть! Я честно скачал несколько похожих обработок с ИС, но ни одна из них меня не устроила, ни по функционалу, ни по удобству. Поэтому пришлось написать свою.

15 Comments

  1. ktb

    (0) Я бы добавил «красненьким», что это только для тех кто понимает, что делает. 🙂

    Reply
  2. nomad_irk

    А обычную форму и формирование скрипта для Postgres сделаете? 🙂

    Reply
  3. barelpro

    (2)

    У меня нет постгресса, не на чем будет тестировать, он еще редко встречается…

    С обычной формой наоборот — уже редко встречается…

    Но если найдутся желающие взять мою обработку за основу для такого развития — я не против!

    Reply
  4. zzz_natali

    (1) Ну, кто добрался «до сладкого», то бишь до манажамент студио, тот уже понимает, что делает. 🙂

    Reply
  5. zzz_natali

    (3) Если проанализировать родной одинэсовский запрос в profiler’е, то там не всё так однозначно. Скажем, очистка адресного классификатора в УПП выглядит так:

    DELETE FROM T1

    FROM dbo._InfoRg19091 T1

    SELECT DISTINCT T1._Fld19325_TYPE, T1._Fld19325_RTRef, T1._Fld19325_RRRef, T1._Fld19326

    FROM dbo._InfoRg19324 T1

    Прокомментируете или пофиг(трункатим скопом, а потом смотрим, жива таблица или амба)?

    Reply
  6. barelpro

    (5) Видеть бы еще ваш УПП, что за имена МД стоят за _InfoRg19091 и _InfoRg19324 ? )

    Кстати, с удалением ссылочных объектов надо быть осторожнее в моей обработке, т.к. могут появится битые ссылки. Да и всякие зависимые таблицы (типа итогов и оборотов регистров) тоже не удаляются.

    Это уже другая должна быть обработка — обрезка базы, немного другой подход.

    Моя цель была — удалить или скрыть информацию, представляющую коммерческую тайну

    Reply
  7. Danil.Potapov

    (5) TRUNCATE ничего не знает о saas от 1с, поэтому платформа использует DELETE.

    Reply
  8. zzz_natali

    (6)

    InfoRg19091 — таблица КЛАДРа

    InfoRg19324 — регистр сведений версии объектов(у нас версионирование включено)

    Да, согласна: с наскока не будет выигрыша, хотя подрихтовать базу от битых ссылок можно через конфигуратор с помощью тестирования/исправления

    Reply
  9. Yashazz

    Не-е-е. Делать обфускатор на уровне СУБД — это к восстановлению битой базы и долгому интенсивному интиму…

    Reply
  10. barelpro

    (9) Конечно, если менять ссылочные реквизиты, а тут только строковые

    Reply
  11. Yashazz

    (10) Всегда есть шанс цепануть что-то критическое…

    Я для себя иначе поступил — написал конфу, которая берёт пустую cf и генерирует стендово-тестовое наполнение по заданным правилам. С тех пор базы у заказчиков не прошу, а прошу лишь логику и статистику их наполнения.

    А обфускацию лучше имхо на уровне платформы делать.

    Reply
  12. barelpro

    (11) Ну это если вы на стороне подрядчика. А если вы на стороне заказчика хотите дать внешнему подрядчику базу, и у вас нет такой волшебной обработки? )

    Reply
  13. dj_tol

    (1)и жирненьким и мигающим.

    Reply
  14. Fox-trot

    (12) или тебя по-твоему незаслуженно уволили

    лол

    Reply
  15. fart07

    Отличная обработка, как раз нужно было быстро обезличить большую базу. Чуть модифицировал под обычные формы.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *