Проверьте историю использования таблиц в SQL Server 2005 - PullRequest
1 голос
/ 16 февраля 2009

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

Спасибо

Ответы [ 5 ]

1 голос
/ 16 февраля 2009

Да - вы можете создать трассировку, MSDN - Трассировка доступа к данным в SQL Server 2005 .

В качестве альтернативы, если вы знаете, что к ним обращается (например, через хранимые процедуры), вы можете оставить в них информацию трассировки (добавление строк в таблицу), тогда вы сможете увидеть, что на самом деле выполняется. Это менее надежно - вы получаете отрицательный результат, потому что вам будет сложнее ловить случайные попадания.

Один из методов, который мы используем, - просто переименовать таблицы, например, в zzz_OldName и просто оставьте их там на некоторое время, периодически обрезая эту область схемы.

0 голосов
/ 04 февраля 2012
-- shows table accesses since last MSSQL reboot via index stats.
-- NULL columns imply table wasnt accessed since the last restart.
SELECT 
  t.name AS 'Table', 
  Count(i.user_seeks) as 'Indexes',
  SUM(i.user_seeks + i.user_scans + i.user_lookups) 
    AS 'Total accesses',
  SUM(i.user_seeks) AS 'Seeks',
  SUM(i.user_scans) AS 'Scans',
  SUM(i.user_lookups) AS 'Lookups',
  SUM(i.user_updates) AS 'Updates'
FROM 
  sys.dm_db_index_usage_stats i RIGHT OUTER JOIN 
  sys.tables t ON (t.object_id = i.object_id)
GROUP BY 
  i.object_id, 
  t.name
ORDER BY [Total accesses] DESC
0 голосов
/ 16 февраля 2009

Может также поместить триггер в таблицу для хранения TableName + GetDate () в таблице WasFoundToBeUsedAfterAll

Возможно, вы захотите UpSert любых уже существующих строк, и, возможно, только если существующей дате уже 24 часа или более, а не вставлять несколько строк - что само по себе станет проблемой обслуживания!

0 голосов
/ 16 февраля 2009

Вы можете проверить свои DMV ( Dynamic Management Views ). Если у всех ваших таблиц есть первичный ключ, есть индекс первичного ключа, и если этот индекс никогда не читается, ваша таблица вообще не используется.

Но учтите: это динамические представления управления - они сбрасываются в 0 при каждом запуске SQL Server. Возможно, вы захотите изучить SQL Server 2008 Performance DAta Collector или проект SQL DMV Stats для SQL Server 2005 для сбора данных DMV в течение длительного периода времени перед удалением таблицы. : -)

Марк

0 голосов
/ 16 февраля 2009

Насколько я знаю, в Sql Server нет встроенной статистики для таких данных. Хотя вы можете использовать Sql Profiler для получения данных об использовании за определенный период времени.

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