Удаление данных регистра сведений средствами SQL

1. G_101343795907160391674 03.10.24 07:18 Сейчас в теме
Здравствуйте

Можно ли без последствий удалить данные регистра сведений напрямую в базе средствами SQL?
Все данные там по сути не нужны и можно удалить все. Вопрос в том не поломается ли после этого что то?

В регистре относительно много данных, примерно 35 гигов.

штатными средствами пробовал сделать, но tempdb начинает разрастаться, кончается место на диске. После перезапуска mssql server база уходит в режим восстановления.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 03.10.24 07:41 Сейчас в теме
(1) 50/50 или поломается, или нет. Проверьте на копии перед тем как ломать прод.
G_101343795907160391674; +1 Ответить
7. G_101343795907160391674 03.10.24 11:40 Сейчас в теме
4. user1880116 03.10.24 07:59 Сейчас в теме
(1) Не стоит лезть в SQL без понимания, почему штатные средства так себя ведут.
Удаляй порциями.
nomad_irk; +1 Ответить
6. G_101343795907160391674 03.10.24 11:40 Сейчас в теме
8. SlavaKron 03.10.24 12:41 Сейчас в теме
(1)
штатными средствами пробовал сделать
Если регистр независимый, то
Набор = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать();
Если зависимый:
Набор = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
Набор.ОбменДанными.Загрузка = Истина;
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ Регистратор ИЗ РегистрСведений.МойРегистр");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Набор.Отбор.Регистратор.Установить(Выборка.Регистратор);
	Набор.Записать();
КонецЦикла;
VyacheslavShilov; +1 Ответить
9. user1880116 03.10.24 12:58 Сейчас в теме
(8)
Набор = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать();

И здравствуй транзакция на "примерно 35 гигов" и переполнение tempdb
10. SlavaKron 03.10.24 18:38 Сейчас в теме
(9)
"примерно 35 гигов"
Это не мои проблемы.
11. user1880116 03.10.24 20:36 Сейчас в теме
(10)
Это не мои проблемы.
Ты великолепен! Не каждый осмелится так раскрыться на форуме. Спасибо!
G_101343795907160391674; +1 Ответить
3. user1519152 03.10.24 07:45 Сейчас в теме
Вообще регистр сведений самое безобидное метаданное из всех, скорее всего все будет хорошо. Но как всегда надо пробовать и проверять
Если удалять полностью, можно truncate table вместо delete, сильно быстрее получится
Можно попробовать удалить метаданное из конфигуратора и потом добавить загрузив cf. Может получится быстро и штатными средствами)
G_101343795907160391674; +1 Ответить
5. G_101343795907160391674 03.10.24 11:39 Сейчас в теме
12. Cohap 6 03.10.24 23:44 Сейчас в теме
Если пытаетесь удалять штатными средствами такой объем, желательно делать это с отборами, т.е. небольшими порциями (если это возможно), скорее всего проще будет свою обработку писать вместо штатных.

Только перед этим:
- Оптимально было бы написать обработку, которая выбрала бы из регистра все объекты ссылочного типа и сразу нашла зависимости, так хоть понятно будет что потенциально может "посыпаться" в случае прямого удаления, т.е. как-то постараться предусмотреть последствия.
- Не лишним будет так же в конфигурации посмотреть через глобальный поиск посмотреть где в коде есть ссылки на этот регистр, опять же для перестраховки, м.б. неведомый код неожиданно берет из него данные (вдруг).

И если все же решитесь трункейтиь таблицу, обратите внимание на то, что у регистра сведений может быть не одна таблица в SQL, если он периодический.
G_101343795907160391674; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот