Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Воин Света
Member

Откуда: Saint-Petersburg
Сообщений: 23
Всем доброго дня.
Есть БД. Данных хватает на 4 года. Теория следующая: необходимо сделать копию базы со всеми данными. Далее, в основной базе удалить все данные, кроме 3 месячной давности. Далее, через 6 месяцев копировать в сделанную ранее копию данные за 3 месяца и оставлять опять 3 месячной давности. Через 6 месяцев ситуация повторяется.
Подскажите, каким образом можно удалить все данные в базе до определенного периода? (если нет такой возможности - то тогда необходимо будет удалять данные через запрос в каждой таблице, как понимаю). И можно ли наладить перенос данных с рабочей базы (3-ех месячную) в основную через, допустим, SQL-агент посредством скрипта (примеры какие-либо имеются)?
28 май 13, 08:36    [14357041]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Воин Света
Всем доброго дня.
Есть БД. Данных хватает на 4 года. Теория следующая: необходимо сделать копию базы со всеми данными. Далее, в основной базе удалить все данные, кроме 3 месячной давности. Далее, через 6 месяцев копировать в сделанную ранее копию данные за 3 месяца и оставлять опять 3 месячной давности. Через 6 месяцев ситуация повторяется.
Подскажите, каким образом можно удалить все данные в базе до определенного периода? (если нет такой возможности - то тогда необходимо будет удалять данные через запрос в каждой таблице, как понимаю). И можно ли наладить перенос данных с рабочей базы (3-ех месячную) в основную через, допустим, SQL-агент посредством скрипта (примеры какие-либо имеются)?

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

Думаю, правильно понимаете, хотя могу ошибаться.
Воин Света
И можно ли наладить перенос данных с рабочей базы (3-ех месячную) в основную через, допустим, SQL-агент посредством скрипта

Да, т.е. если вы напишете процедуру очистки базы за 3 месяца, то вы спокойно её поставите в шаг в задании агента и сделаете расписание. А в неё, например, будете передавать параметром даты с и по какую необходимо удалить.
Как-то так.
28 май 13, 08:55    [14357092]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Воин Света
Member

Откуда: Saint-Petersburg
Сообщений: 23
Там не совсем удалить надо, а перенести, скопировать в основной бэкап. После копирования, конечно же можно и удалить.
Может кто подскажет ресурс либо может где-то тут обсуждения подобные были.
28 май 13, 09:00    [14357118]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Сергей Викт.
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]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
AlexandrPlus
Member

Откуда:
Сообщений: 7887
Воин Света,

так это содержательная составляющая
Что значит данные за сутки, за неделю, ...?
К ним конечно не относятся справочники, например.
28 май 13, 09:14    [14357172]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
Воин Света,

delete output insert....

хотя для подобной задачи лаконичнее секционирование использовать - alter table switch partition...
28 май 13, 09:32    [14357235]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Воин Света
Member

Откуда: Saint-Petersburg
Сообщений: 23
AlexandrPlus,

нет, в принципе, интересуют несколько таблиц, около 11, в которых постоянно пополняются данные.
28 май 13, 09:39    [14357262]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Воин Света
AlexandrPlus,

нет, в принципе, интересуют несколько таблиц, около 11, в которых постоянно пополняются данные.

Для 11 таблиц не грех написать запросы
delete output insert, как советовали выше.
Ну либо действительно секционирование с переключением по дате.
28 май 13, 09:51    [14357331]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Воин Света,

У вас архитектура базы вообще позволяет безболезненно удалять данные? Не нужно ли подсчитывать какие-нибудь остатки на дату удаления и т.п.? В особо тяжёлых случаях разработка процесса усечения БД может занять в сумме несколько человеко-месяцев работы архитекторов, программистов и тестировщиков.
28 май 13, 09:52    [14357334]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных в MSSQL 2008 во всех таблицах до определенного времени  [new]
Воин Света
Member

Откуда: Saint-Petersburg
Сообщений: 23
Гость333,

нет, подсчитывать ничего не надо.
У меня крутится exist который собирает данные с базы. Будет собирать за 3 месяца, а не за весь период. Итоги никакие не ведутся.
28 май 13, 09:57    [14357356]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить