|   |   | 
| 
 | Как правильно удалить записи регистра сведений через MS SQL? | ☑ | ||
|---|---|---|---|---|
| 0
    
        kumena 10.08.17✎ 10:44 | 
        слишком много записей в регистре, нужно удалить частично, через 1с очень долго получается.
 Посмотрел через команду МассивИменМетаданных = Новый Массив(); МассивИменМетаданных.Добавить(Метаданные.РегистрыСведений.ГрафикиРаботыПоВидамВремени); СтруктБД = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных); получается 2 таблицы - регистрация изменений и основная. Непонятно почему их две, и зачем нужна таблица регистрации изменений, соответственно, не понятно какие изменения можно удалить. и как правильно написать запрос на T-SQL ? | |||
| 1
    
        Cyberhawk 10.08.17✎ 10:45 | 
        "Непонятно почему их две, и зачем нужна таблица регистрации изменений" // ИТС уже почитал?     | |||
| 2
    
        Cyberhawk 10.08.17✎ 10:46 | 
        Если удалять долго, то можно сохранить то, что удалять не надо, очистить весь РС и потом в него загрузить то, что сохранил до этого     | |||
| 3
    
        kumena 10.08.17✎ 10:53 | 
        > ИТС уже почитал?
 нет, можешь ссылку дашь куда там смотреть? > Если удалять долго, то можно сохранить то, что удалять не надо, очистить весь РС и потом в него загрузить то, что сохранил до этого удаление и запись - это все процесс записи, они долго проходят потому что регистр раздулся. все сразу из 1с не удалить, никакой озу не хватит. а если частично, то можно просто не удалять то что нужно оставить. | |||
| 4
    
        Волшебник модератор 10.08.17✎ 10:55 | 
        Пересоздать регистр в Конфигураторе, загрузить остатки.     | |||
| 5
    
        kumena 10.08.17✎ 10:57 | 
        > Пересоздать регистр в Конфигураторе, загрузить остатки.
 какие остатки для регистра сведений? | |||
| 6
    
        Волшебник модератор 10.08.17✎ 10:58 | 
        (5) Оставшиеся записи     | |||
| 7
    
        kumena 10.08.17✎ 11:02 | 
        (6) это тоже наверное не устроит, да и как потом обновляться с новым идентификатором регистра?     | |||
| 8
    
        Волшебник модератор 10.08.17✎ 11:03 | 
        (7) Идентификатор оставить старый     | |||
| 9
    
        Йохохо 10.08.17✎ 11:03 | 
        (7) накатить из конфы поставщика     | |||
| 11
    
        kumena 10.08.17✎ 11:06 | 
        да, сейчас понял. 
 может это и быстрее будет, выгрузить 10 миллионов записей в xml, а потом загрузить, но я думаю что слишком много шансов что она вообще не осилит. | |||
| 12
    
        Волшебник модератор 10.08.17✎ 11:07 | 
        (0) "и зачем нужна таблица регистрации изменений"
 для планов обмена | |||
| 13
    
        mehfk 10.08.17✎ 11:07 | 
        (0)
 Выгрузить что нужно оставить в xml или еще куда. Сделать TRUNCATE TABLE. Загрузить. PROFIT! | |||
| 14
    
        Numerus Mikhail 10.08.17✎ 11:08 | 
        Изменение данных напрямую через SQL является нарушением лицензионного соглашения!     | |||
| 15
    
        kumena 10.08.17✎ 11:10 | 
        > Выгрузить что нужно оставить в xml или еще куда. 
 ты себе представляешь xml файл на 10 миллионов записей? | |||
| 16
    
        kumena 10.08.17✎ 11:10 | 
        > Изменение данных напрямую через SQL является нарушением лицензионного соглашения!
 спасибо, я в курсе | |||
| 17
    
        X Leshiy 10.08.17✎ 11:10 | 
        (15) 10 миллионов оставить надо, сколько тогда всех записей?!     | |||
| 18
    
        kumena 10.08.17✎ 11:11 | 
        +15 а главное какой клиент его прожевать сможет и за какое время?     | |||
| 19
    
        kumena 10.08.17✎ 11:11 | 
        30 с лишним     | |||
| 20
    
        X Leshiy 10.08.17✎ 11:11 | 
        (17) Нихуясеберегистр, извините.     | |||
| 21
    
        X Leshiy 10.08.17✎ 11:12 | 
        (19) Ну выгрузи 30 и снеси регистр.     | |||
| 22
    
        mehfk 10.08.17✎ 11:16 | 
        (15) У меня хорошее воображение.     | |||
| 23
    
        Волшебник модератор 10.08.17✎ 11:17 | 
        (15) выгружай на SSD-диск     | |||
| 24
    
        Волшебник модератор 10.08.17✎ 11:18 | 
        (23)+ или RAM-диск     | |||
| 25
    
        mehfk 10.08.17✎ 11:19 | 
        Не нравится выгружать - удаляй. DELETE FROM ... WHERE     | |||
| 26
    
        piter3 10.08.17✎ 11:19 | 
        А это разовая операция?     | |||
| 27
    
        kumena 10.08.17✎ 11:21 | 
        ну скажем так, двух разовая, сначала надо в тестовой базе убедиться что все хорошо!     | |||
| 28
    
        kumena 10.08.17✎ 11:23 | 
        я так и подозревал что вторая таблица для планов обмена. осталось только скрипт написать, сейчас пока более срочные есть задачи, а потом им займусь, но если кто напишет, то будет еще лучше.     | |||
| 29
    
        Йохохо 10.08.17✎ 11:26 | 
        (27) потом на тестовую накатываешь бэкап и тихой сапой переносишь в очищенную рабочую     | |||
| 30
    
        X Leshiy 10.08.17✎ 11:26 | 
        (28) А ты точно сварщик, или маску на стройке нашел?     | |||
| 31
    
        DmitrO 10.08.17✎ 11:26 | 
        Ничо не надо пересоздавать и перекладывать.
 Надо просто удалить лишнее. Надо просто сделать обмены данными чтобы таблица регистрации изменений была пустая (если обмены данными используются и там вообще что-то есть). Далее удалять так. Перевести базу в Простую модель восстановления. Удалять записи обычным delete с нужными условиями, но делать это порциями, чтобы не сильно прирастал ЖТ. Потом вернуть полную модель восстановления и сбекапить базу. Все. Память клиента тут не причем. А сервер точно справится при любом размере памяти. | |||
| 32
    
        kumena 10.08.17✎ 11:32 | 
        (31)
 > Надо просто удалить лишнее. да, я тоже за этот вариант, вижу его самым беспроблемным. Спасибо, план действий понятен! | |||
| 33
    
        DmitrO 10.08.17✎ 11:34 | 
        ГрафикиРаботыПоВидамВремени вероятно в ЗУП 2.5
 Посмотрел его. Решение задачи с помощью прямого доступа к SQL может вообще не дать изюму ну или дать но небольшой, ибо и на 1С можно написать достаточно эффективно. | |||
| 34
    
        Ахмадинежад 10.08.17✎ 11:55 | 
        как-то обрезал большую базу средствами МС СКЛ... 
 как-то не срасталось всё, плюнул, взял обработку с ИТС - и просто подождал ) | |||
| 35
    
        DmitrO 10.08.17✎ 12:56 | 
        (14)а кто придумал эту чепуху? и почему все об этом рассказывают на этом форуме?     | |||
| 36
    
        Ёпрст гуру 10.08.17✎ 13:01 | 
        (35) обычно пишут те, кто qa в глаза не видел     | |||
| 37
    
        Lama12 10.08.17✎ 13:29 | 
        (35) (36) Ну раньше этот запрет точно был. Может сейчас и поменяли.     | |||
| 38
    
        GANR 10.08.17✎ 13:48 | 
        (8) Проще TRUNCATE TABLE. Чем удалить, потом сравнением/объединением переносить.     | |||
| 39
    
        Timon1405 10.08.17✎ 14:12 | 
        (35)(36) http://v8.1c.ru/predpriyatie/questions_licence.htm#mvv
 п. 65 | |||
| 40
    
        rudnitskij 10.08.17✎ 14:26 | 
        А почему нельзя программно средствами 1с удалить ненужные записи? По одной в цикле, а не весь регистр сразу     | |||
| 41
    
        kumena 10.08.17✎ 14:34 | 
        > А почему нельзя программно средствами 1с удалить ненужные записи? По одной в цикле, а не весь регистр сразу
 в первом посте написал - долго получается, в лучшем случае через месяц. > Решение задачи с помощью прямого доступа к SQL может вообще не дать изюму ну или дать но небольшой, ибо и на 1С можно написать достаточно эффективно. почему? обычно везде пишут о сказочной скорости удаления. но я конечно попробую другими порциями еще. | |||
| 42
    
        Timon1405 10.08.17✎ 14:36 | 
        (40) есть платформенные накладные расходы на удаление записей: например, поиск ссылок на объект, если он стоит как ведущее измерение в регистре. в том числе поэтому 1С и не рекомендует прямого доступа к СУБД.     | |||
| 43
    
        H A D G E H O G s 10.08.17✎ 14:38 | 
        (42) Ты путаешь.     | |||
| 44
    
        Фрэнки 10.08.17✎ 14:38 | 
        (41) транзакциями не пользуешься?     | |||
| 45
    
        H A D G E H O G s 10.08.17✎ 14:39 | 
        Автор, ты не поверишь, но и в sql тоже будет долго :-)     | |||
| 46
    
        H A D G E H O G s 10.08.17✎ 14:39 | 
        Если накладывать хоть какие-нибудь условия на отбор при удалении.     | |||
| 47
    
        kumena 10.08.17✎ 14:40 | 
        (44) это вроде в 7.7 рулило, а на восьмерке прироста не дает.     | |||
| 48
    
        H A D G E H O G s 10.08.17✎ 14:40 | 
        А так - можно поотключать индексивароние-ведущесть у измерений и ресурсов - и вперед, типовыми средствами.     | |||
| 49
    
        kumena 10.08.17✎ 14:42 | 
        (46) понятно, т.е. все меняет то, что устанавливается отбор.     | |||
| 50
    
        H A D G E H O G s 10.08.17✎ 14:42 | 
        Ну и job в sql на дефраг индеска и апдейт статистики по этим двум таблицам раз в 5 минут.     | |||
| 51
    
        kumena 10.08.17✎ 14:44 | 
        в целом все понятно! всем спасибо!     | |||
| 52
    
        rudnitskij 10.08.17✎ 17:58 | 
        (51) тогда закрывайте тему.
 А то мы вам напишем тут)) | |||
| 53
    
        Злопчинский 10.08.17✎ 18:35 | 
        (36) дикари , что с них взять ... ;+)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |