Дата последнего обращения к базе

ybill
Дата: 11.02.2013 15:34:32
Добрый день!

У нас есть SQL server 2008R2 выделенный специально для разработчиков. На нем они вольны создавать себе базы, тренироваться, тестировать и т.д. и т.п. Разработчиков много, баз еще больше, хотелось бы каким-то образом отслеживать какие их баз не были востребованы ну скажем за последний месяц.
LOGON TRIGGER у меня себя почему-то не оправдал, поскольку практически всегда подключение идет к master, а уже потом use database.

Может быть есть какое-нибудь системное представление где хранится такая дата или ее можно косвенным образом как-то вычислить?

---
Мой скилл в SQL = количеству сообщений на этом форуме
Glory
Дата: 11.02.2013 15:35:52
А что для вас есть "обращение к базе" ?
use database
go
use master

это обращение или нет ?
ybill
Дата: 11.02.2013 15:55:00
Glory,
В идеале - да :), в качестве промежуточного варианта хотелось бы отлавливать
use database
select field from table

но на крайний случай - insert/update/delete

Сейчас я просто отслеживаю дату изменения файлов логов для баз и она дает мне хоть какой-то ориентир.
Glory
Дата: 11.02.2013 16:04:09
Если все таблицы имеют индексы, то
sys.dm_db_index_usage_stats

Лог вызовов процедур/функций/команд, которые не используют таблиц базы, задним числов невозможен.
ybill
Дата: 11.02.2013 16:05:55
Glory, точно! Спасибо, этого вполне достаточно
Knyazev Alexey
Дата: 11.02.2013 16:08:51
Mind
Дата: 13.02.2013 03:40:58
ybill
Glory, точно! Спасибо, этого вполне достаточно
SELECT 
  DB_NAME(db.database_id) DatabaseName, 
  MAX(CASE WHEN ISNULL(s.last_user_seek, '1900-01-01') > ISNULL(s.last_user_scan, '1900-01-01') 
      THEN 
        CASE WHEN ISNULL(s.last_user_seek, '1900-01-01') > ISNULL(s.last_user_lookup, '1900-01-01') 
        THEN 
          s.last_user_seek
        ELSE
          s.last_user_lookup
        END
      ELSE 
        CASE WHEN ISNULL(s.last_user_scan, '1900-01-01') > ISNULL(s.last_user_lookup, '1900-01-01') 
        THEN 
          s.last_user_scan
        ELSE
          s.last_user_lookup
        END          
      END) AS last_user_read,
  MAX(last_user_update) AS last_user_update,
  db.create_date AS db_create_date
FROM sys.databases db
  LEFT JOIN sys.dm_db_index_usage_stats AS s ON s.database_id = db.database_id
GROUP BY DB_NAME(db.database_id), db.create_date
ORDER BY last_user_read, last_user_update