#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, содержащих такую информацию. К сожалению, ни один из предоставленных вами вариантов не применим в моем случае, но все равно спасибо!