2010-03-01 2 views

ответ

7

Вы можете попробовать проверить результаты запросов к sys.dm_db_index_usage_stats Dynamic Management View, как это:

SELECT * 
FROM sys.dm_db_index_usage_stats 
WHERE [database_id] = DB_ID() 
    AND [object_id] = OBJECT_ID('TableName') 

Это будет возвращать вещи, как last_user_seek, сканирование и обновление даты на индексах таблицы.

Howvever, остерегайтесь, поскольку статистика для представления динамического управления сбрасывается при перезапуске сервера. Чем дольше сервер работает, тем больше уверенности вы можете получить, если в отчетах нет активности.

лично я хотел бы также проверять весь исходный код для проверки ссылок на таблицы в вопросе, и поиск все sprocs/UDF, для ссылок тоже (вы можете использовать SQL Search from Red Gate, чтобы это сделать - это бесплатно)

+0

Это именно то, что я искал. Благодаря! : О) –

0

Если это важно для ваших приложений и/или компаний, а таблицы были разработаны правильно, то каждая таблица должна иметь столбец, называемый «LastModifiedTime». Вы можете запросить эту таблицу, чтобы определить, какие таблицы устарели.

+0

К сожалению, я не проектировал исходную базу данных. Поэтому мне было интересно, есть ли что-то в таблицах базы данных sys, которые я мог бы запросить, чтобы узнать, какие таблицы больше не используются или не использовались в то время. –

1

Если любой ищет все неиспользуемые таблицы в базе данных (больше запроса заголовка, чем вопрос), this guy имел хороший запрос для внесения всех неизменных таблиц в базу данных. В этом случае «неизмененным» является любая таблица без записи в sys.dm_db_index_usage_stats (опять же, как и с ответа AdaTheDev, только после перезагрузки последнего сервера sql).

SELECT OBJECTNAME = Object_name(I.object_id), 
     INDEXNAME = I.name, 
     I.index_id 
FROM sys.indexes AS I 
     INNER JOIN sys.objects AS O 
       ON I.object_id = O.object_id 
WHERE Objectproperty(O.object_id, 'IsUserTable') = 1 
     AND I.index_id NOT IN (SELECT S.index_id 
           FROM sys.dm_db_index_usage_stats AS S 
           WHERE S.object_id = I.object_id 
            AND I.index_id = S.index_id 
            AND database_id = Db_id(Db_name())) 
ORDER BY objectname, 
      I.index_id, 
      indexname ASC 
Смежные вопросы