Как ограничить размер стола? - PullRequest
6 голосов
/ 06 октября 2010

У меня есть база данных SQL Server 2005. Я записываю данные в таблицу. Я хочу, чтобы данные таблицы не становились слишком большими.

Как я могу ограничить размер таблицы х числом строк и вести журнал? Я хочу, чтобы выпали самые старые строки.

Ответы [ 4 ]

8 голосов
/ 06 октября 2010

Вы должны построить этот процесс самостоятельно.Возможно, вы захотите взглянуть на создание задания SQL Server, которое выполняет оператор SQL DELETE на основе определенных вами критериев.

3 голосов
/ 06 октября 2010

Это один пример, где триггеры могут быть хорошей идеей в Sql Server. (Мое личное мнение таково, что триггеры в SQL похожи на GOTO в коде.)

Просто напишите триггер INSERT, который при запуске проверит количество строк в файле и выполнит УДАЛЕНИЕ в соответствии с указанными вами правилами.

Вот ссылка на основы триггера. И еще один , на этот раз с заглавными буквами экрана.

2 голосов
/ 06 октября 2010

Поместите таблицу в собственную файловую группу. Ограничить размер файловой группы. См:

Затем добавьте задание, которое удаляет старые записи журнала, но обычно это сложнее, чем кажется. Наиболее эффективный способ использования скользящего окна: Как реализовать автоматическое скользящее окно в секционированной таблице . Если это невозможно, то следующим лучшим решением будет убедиться, что кластеризованный ключ в таблице является датой, чтобы удаления могли эффективно удалить старые строки.

0 голосов
/ 06 октября 2010

Если вы хотите ограничить размер таблицы для целей ведения журнала, я бы не советовал думать о решении проблемы путем ограничения количества записей, хранящихся в таблице. Вместо этого есть процесс архивации или очистки для таблицы, в которой хранятся журналы, этот процесс можно настроить либо на очистку / архивирование журналов, либо после достижения X числа строк, либо, возможно, позже вы захотите перенастроить его после X числа минут / ч / и т.д.. Если вас беспокоит фактическое пространство, тогда лучше проанализировать, сколько места фактически занимают ваши журналы. Как только вы поймете, сколько физического пространства у вас есть для базы данных, ограничьте рост данных из SQL Server, чтобы убедиться, что файл данных, в котором хранится информация журналирования, не превосходит ваши ожидания.

...