Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Воин Света Member Откуда: Saint-Petersburg Сообщений: 23 |
Всем доброго дня. Есть БД. Данных хватает на 4 года. Теория следующая: необходимо сделать копию базы со всеми данными. Далее, в основной базе удалить все данные, кроме 3 месячной давности. Далее, через 6 месяцев копировать в сделанную ранее копию данные за 3 месяца и оставлять опять 3 месячной давности. Через 6 месяцев ситуация повторяется. Подскажите, каким образом можно удалить все данные в базе до определенного периода? (если нет такой возможности - то тогда необходимо будет удалять данные через запрос в каждой таблице, как понимаю). И можно ли наладить перенос данных с рабочей базы (3-ех месячную) в основную через, допустим, SQL-агент посредством скрипта (примеры какие-либо имеются)? |
28 май 13, 08:36 [14357041] Ответить | Цитировать Сообщить модератору |
Сергей Викт. Member Откуда: Москва Сообщений: 888 |
Доброе утро. Можно конечно.
Думаю, правильно понимаете, хотя могу ошибаться.
Да, т.е. если вы напишете процедуру очистки базы за 3 месяца, то вы спокойно её поставите в шаг в задании агента и сделаете расписание. А в неё, например, будете передавать параметром даты с и по какую необходимо удалить. Как-то так. |
||||||
28 май 13, 08:55 [14357092] Ответить | Цитировать Сообщить модератору |
Воин Света Member Откуда: Saint-Petersburg Сообщений: 23 |
Там не совсем удалить надо, а перенести, скопировать в основной бэкап. После копирования, конечно же можно и удалить. Может кто подскажет ресурс либо может где-то тут обсуждения подобные были. |
28 май 13, 09:00 [14357118] Ответить | Цитировать Сообщить модератору |
Сергей Викт. Member Откуда: Москва Сообщений: 888 |
https://www.sql.ru/forum/316996/neobhodima-pomoshh-s-perenosom-dannyh?hl=??????? ?????? ?? ?????? https://www.sql.ru/articles/publications.shtml Вообще поиском по форуму: "перенос данных за период". Достаточно часто поднимаются такие вопросы. |
||
28 май 13, 09:08 [14357150] Ответить | Цитировать Сообщить модератору |
AlexandrPlus Member Откуда: Сообщений: 7887 |
Воин Света, так это содержательная составляющая Что значит данные за сутки, за неделю, ...? К ним конечно не относятся справочники, например. |
28 май 13, 09:14 [14357172] Ответить | Цитировать Сообщить модератору |
Алексей Куренков Member [заблокирован] Откуда: Москва Сообщений: 567 |
Воин Света, delete output insert.... хотя для подобной задачи лаконичнее секционирование использовать - alter table switch partition... |
28 май 13, 09:32 [14357235] Ответить | Цитировать Сообщить модератору |
Воин Света Member Откуда: Saint-Petersburg Сообщений: 23 |
AlexandrPlus, нет, в принципе, интересуют несколько таблиц, около 11, в которых постоянно пополняются данные. |
28 май 13, 09:39 [14357262] Ответить | Цитировать Сообщить модератору |
Сергей Викт. Member Откуда: Москва Сообщений: 888 |
Для 11 таблиц не грех написать запросы delete output insert, как советовали выше. Ну либо действительно секционирование с переключением по дате. |
||
28 май 13, 09:51 [14357331] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Воин Света, У вас архитектура базы вообще позволяет безболезненно удалять данные? Не нужно ли подсчитывать какие-нибудь остатки на дату удаления и т.п.? В особо тяжёлых случаях разработка процесса усечения БД может занять в сумме несколько человеко-месяцев работы архитекторов, программистов и тестировщиков. |
28 май 13, 09:52 [14357334] Ответить | Цитировать Сообщить модератору |
Воин Света Member Откуда: Saint-Petersburg Сообщений: 23 |
Гость333, нет, подсчитывать ничего не надо. У меня крутится exist который собирает данные с базы. Будет собирать за 3 месяца, а не за весь период. Итоги никакие не ведутся. |
28 май 13, 09:57 [14357356] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |