Автоматически управлять размером базы данных Sql Server
Существует 2 службы.NET, которые используют 2 базы данных SQL Server. В настоящее время я использую SQL Express, поэтому максимальный размер базы данных является проблемой.
Когда размер приближается к пределу в 10 ГБ (или некоторому пределу записи), я хотел бы автоматически удалить самое старое количество записей X, чтобы освободить место.
Это не производственная среда, и мне ДЕЙСТВИТЕЛЬНО не нужны старые данные, я просто хочу, чтобы данные были "свежими".
Должно ли это быть сделано на уровне обслуживания? Я могу изменить свои службы, чтобы периодически проверять используемое пространство и выполнять ручную "очистку" (будь то удаление, архивирование и т. Д.). Однако я не уверен, как это сделать на уровне SQL.
Спасибо
2 ответа
Поскольку вы используете SQL Express, вам нужно будет сделать это на уровне обслуживания по некоторому расписанию. Сначала вам нужно будет удалить строки из таблиц, из которых вы хотите удалить данные. Что-то вроде:
delete BigOleTable where LoggedDate < dateadd(yy,-1,getdate())
это избавит от вещей старше года.
Затем вам нужно будет сжать базу данных.. так что это зависит от вашей модели восстановления. Если вы полностью восстановлены, вам нужно сделать резервную копию журнала транзакций. и затем выпустите базу данных сокращения, как Таннер упоминал выше.
Вы можете создать задание, которое выполняет это или лучше использует SSIS (см. Это: http://technet.microsoft.com/en-us/library/ms181153%28v=sql.105%29.aspx).
Вы можете использовать эту http://technet.microsoft.com/en-us/library/ms188776.aspx процедуру, чтобы запросить используемое пространство, и если оно превысит ограничение, вы можете удалить данные.