Есть ли в SQL Server функция / функция, позволяющая определить, выполняет ли таблица какие-либо (недавние) действия? - PullRequest
4 голосов
/ 09 сентября 2011

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

( SQL Server 2000 )

Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 09 сентября 2011

Для SQL Server 2005 +

sys.dm_db_index_usage_stats сообщает, когда в последний раз выполнялся план, ссылающийся на конкретную таблицу ( не обязательно, чтобы к самой таблице обращались ввыполнение этого плана ).

Эти метаданные не сохраняются при перезапусках службы, поэтому вам необходимо проверить их после того, как ваш сервер некоторое время работал.

Для SQL Server 2000

Нет, это невозможно, я считаю.Возможно, вы сможете сделать вывод о том, когда они были в последний раз изменены, просмотрев статистику обновленного времени и sysindexes.rowmodctr, но я не думаю, что последний раз, когда они были выбраны, сохранялся где-либо.

4 голосов
/ 09 сентября 2011

Да - запрос, подобный этому, должен дать вам необходимую информацию:

SELECT 
        last_user_seek,
        last_user_scan
    FROM
        sys.dm_db_index_usage_stats
    WHERE
        database_id = DB_ID() and object_id = object_id('tablename')

Обновление для SQL 2000 : Нет - я считаю, что нет встроенного способа получить этоинформация в SQL 2000

1 голос
/ 09 сентября 2011

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

Если у вас есть доступ к коду, я рекомендую сканировать запросы на доступ к каждой таблице.

Если нет, то вы можете получить некоторую информацию из статистики использования индекса, как рекомендовано другими ответами. Но действуйте осторожно!

[править] Я вижу, у вас есть SQL Server 2000. Статистика использования не в этой версии, и я не думаю, что есть какой-либо эквивалент.

Если в таблице есть столбцы даты и времени, вы можете видеть, когда эти даты, но это не скажет вам, когда к ним последний раз обращались.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...