Системный SQL Server с меткой последней вставленной строки каждой таблицы

#sql-server #sql-server-2008-r2 #dmv

#sql-сервер #sql-server-2008-r2 #dmv

Вопрос:

Существует ли какая-либо системная таблица или dmv, в SQL Server 2008 R2 которых содержится информация о последнем операторе DML (кроме select), который был выдан для какой-либо пользовательской таблицы?

Я вижу, что в sys.tables есть столбец modify_date, но это только для любого изменения таблицы (инструкции DDL). Я бы не хотел создавать триггеры для каждой таблицы в БД или триггер на уровне базы данных для этой области.

Причина этого в том, что я хотел бы узнать, когда в последний раз в каждую таблицу выполнялась инструкция insert, update или delete, чтобы узнать, могу ли я удалить некоторые из таблиц, которые больше не используются — это для DWH db, где каждая таблица в БДпредполагается, что любая из этих 3 операций выполняется не реже одного раза в неделю / месяц / квартал / год.

Ответ №1:

Вариант 1:
включение сбора данных изменений для вашей БД. Обратитесь к ссылке ниже для CDC:

http://technet.microsoft.com/en-us/library/cc627369(v=sql.105).aspx

Вариант 2:
создайте триггер для каждой таблицы и регистрируйте в общей таблице всякий раз, когда в любой таблице происходит ВСТАВКА / ОБНОВЛЕНИЕ / УДАЛЕНИЕ (старый традиционный метод).

Комментарии:

1. Спасибо за варианты, но суть в том, что нет никаких «отправленных» системных таблиц или dmv, содержащих такую информацию. К сожалению, ни один из предоставленных вами вариантов не применим в моем случае, но все равно спасибо!