Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
plorkie Member Откуда: Сообщений: 31 |
Добрый вечер, всем! Имеется процедура, которая раз в час загружает новую порцию данных, перед вставкой инкремента, таблица чистится. Появилась необходимость хранить данные в этой таблице в определенный промежуток времени, т.е допустим с 00:00 до 08:00 am таблица наполняется данными (без предварительного удаления), в оставшееся время таблица, как было изначально чистится и затем наполняется. Подскажите пжст, с помощью чего это оптимальней сделать? Были мысли это осуществить с помощью waitfor delay и с помощью цикла, но пока не могу до конца додумать. |
2 июл 19, 22:21 [21919494] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
plorkie, А раз в час процедура загружает через waitfordelay? |
2 июл 19, 23:18 [21919507] Ответить | Цитировать Сообщить модератору |
Megabyte Member Откуда: ближайшее заМКАДье Сообщений: 4975 |
Не понятно, с чем у вас проблемы? Можно использовать джоб по расписанию, в нем будет код удаления данных. Если данных много, то лучше удалять порциями в цикле. Если не слишком много, то можно одним запросом. Причем тут "waitfor delay" вообще не понятно... |
2 июл 19, 23:19 [21919508] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1244 |
Проще надо быть. Пиши в каждой строке СрокПротухания. И учитывай это в запросе, если надо. Фсе. Когда ты удалишь протухшие записи - дело десятое. |
||
3 июл 19, 06:00 [21919556] Ответить | Цитировать Сообщить модератору |
uaggster Member Откуда: Сообщений: 960 |
Если я всё правильно понял, то, если позволяет версия и редакция сервера (до 2016SP1 - энтерпрайз, после - любая), я бы разрезал таблицу на секции, и секцию, в которой производятся изменения - держал бы в двух экземплярах. Соответственно "заливка с удалением" - это загрузка в пустую отсоединенную секцию. А "заливка без удаления" - это обычная работа. Как только данные залиты в отсоединенную секцию - switch partition, и всё заново. Нужно только, чтобы все изменения были локализованы в "горячей" секции. |
||
3 июл 19, 08:16 [21919577] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1244 |
Иногда, лучше жевать. |
||||
3 июл 19, 10:27 [21919630] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
plorkie, разделите процесс на две процедуры - одна чистит, вторая заполняет. Затем джоб из двух шагов, в шаге очистки напишите if с проверкой времени. Секционирование там не нужно. |
3 июл 19, 12:13 [21919724] Ответить | Цитировать Сообщить модератору |
plorkie Member Откуда: Сообщений: 31 |
Всем спасибо! |
4 июл 19, 08:37 [21920443] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |