2015-11-17 3 views
0

По причинам X и Y я не могу использовать какие-либо встроенные возможности аудита SQL Server (аудит или CDC).Как я могу ограничить размер таблицы SQL Server?

Я вынужден создать таблицу для хранения всего, что связано с отслеживаемостью и журналами событий. Конечно, эта таблица может стать ОГРОМНОЙ, и это создает проблему.

Есть ли способ ограничить размер строки или размер МБ таблицы, делая это таким образом, чтобы при достижении X количества строк или МБ старшие строки были удалены, чтобы разрешить вставку новых ?

Я думаю, я мог бы вызвать ублюдка с автонумерным полем или какой-либо столбец даты (в случае, если мой лимит определяется периодами), но я спрашиваю, есть ли более «классный» способ сделать это?

+2

Как насчет работы, которая выполняется каждую ночь и удаляет самые старые записи, если количество записей превышает количество? – lad2025

+0

@ lad2025, к сожалению, поскольку это система, которая будет использоваться 24 часа в сутки 7 дней в неделю, ночная работа, возможно, просто не отрежет ее (в случае, если это был особенно насыщенный день). Но я думаю, что за несколько строк над лимитом все в порядке, мне нужно будет проверить с сумасшедшими менеджерами проектов, которые связали мои руки – dhuesca

+0

, вы можете определенно ограничить его до X числа строк после ответа sokjukim (ON INSERT триггеры), предполагая, что вы только имеют типы данных детерминированного размера, поэтому нет varchar (MAX), например, вы можете легко вычислить максимальное количество строк, которые вы должны сохранить. –

ответ

1

Если существует строгое правило ограничения размера таблицы, триггер будет лучше. Но это может повлиять на производительность. Или вы можете использовать запланированное задание для удаления старых записей.

+0

. Он упомянул, что запланированное задание может не сделать этого, но что-то, что вы можете сделать, - это свободный триггер ограничения размера. Вместо того, чтобы удалять 501-ю строку с каждой вставкой, вы можете просто удалить все строки, которые превышают 500, когда у вас более 550 строк. –