@shell_guy

Как удалить данные за период и проверить на целостность?

База данных разрослась за 5 лет до огромных размеров. Какими командами сделать очистку данных, оставив за последний год? Какими командами проверить на целостность и оптимизировать?
  • Вопрос задан
  • 380 просмотров
Решения вопроса 2
ScriptKiddo
@ScriptKiddo
Какими командами сделать трункейт данных и оставить данные за последний год?

Если есть партиции - удаляете партиции

https://docs.microsoft.com/ru-ru/sql/t-sql/stateme...

TRUNCATE TABLE PartitionTable1   
WITH (PARTITIONS (2, 4, 6 TO 8));  
GO

Если партиций нет и данных мало - удалить просто

DELETE FROM table WHERE date <= %date%

Если данных много - сделать задачу в SQL Agent. Количество удаляемых строк оставляете на свое усмотрение

DELETE TOP (1000) FROM table WHERE date <= %date%

Какими командами проверить на целостьность и оптимизировать?


Проверять целостность и логичность - только вручную. Необходимость и возможность удаления ваших данных определяете только вы.

Если нужно проверить, не битая ли база - то используйте команду DBCC CHECKDB
https://docs.microsoft.com/ru-ru/sql/t-sql/databas...

P.S Не помешали бы бекапы и прочее прочее
Ответ написан
Комментировать
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Про удаление написал ScriptKiddo.
Целостность данных нужно не проверять, а регулировать (ограничивать) внешними ключами. Перед очисткой проверьте, что бы у них были правильно указаны
ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }

Создание связей по внешнему ключу.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы