В SQL Server 2005 вы можете легко определить последний раз, когда кто-то запросил базу данных.
Как вы находите в последний раз доступ к базе данных?
Ответ 1
SELECT
last_user_seek = MAX(last_user_seek),
last_user_scan = MAX(last_user_scan),
last_user_lookup = MAX(last_user_lookup),
last_user_update = MAX(last_user_update)
FROM
sys.dm_db_index_usage_stats
WHERE
[database_id] = DB_ID()
Одно из предостережений с этим методом заключается в том, что информация в DMV будет очищена и отменена при каждом перезапуске SQL Server.
Ответ 2
Нашел это в MySQLtips - работал у меня.
select d.name, x1 =
(select X1= max(bb.xx)
from (
select xx = max(last_user_seek)
where max(last_user_seek) is not null
union all
select xx = max(last_user_scan)
where max(last_user_scan) is not null
union all
select xx = max(last_user_lookup)
where max(last_user_lookup) is not null
union all
select xx = max(last_user_update)
where max(last_user_update) is not null) bb)
FROM master.dbo.sysdatabases d
left outer join
sys.dm_db_index_usage_stats s
on d.dbid= s.database_id
group by d.name
Ответ 3
Чтобы расширить ответ Джеймса Аллена:
SELECT d.name,
last_user_seek = MAX(last_user_seek),
last_user_scan = MAX(last_user_scan),
last_user_lookup = MAX(last_user_lookup),
last_user_update = MAX(last_user_update)
FROM sys.dm_db_index_usage_stats AS i
JOIN sys.databases AS d ON i.database_id=d.database_id
GROUP BY d.name
Используйте эту измененную версию, если вы не хотите получать результаты в контексте базы данных и хотите включить имя базы данных в начале набора результатов.
Ответ 4
Вам нужно провести аудит или настроить трассировку сервера SQL заблаговременно.
Ответ 5
Не легко, но если вы включите функцию ведения журнала SQL Server, вы можете проверить журналы, используя программное обеспечение, чтобы узнать, когда был последний запрос, и что это было.
-Adam
Ответ 6
SQL Server может регистрировать информацию о событиях для попыток входа в систему, и вы можете просмотреть ее путем рассмотрения ошибки. Включив уровень аудита SQL Server.
выполните следующие действия, чтобы включить проверку всех/успешных соединений с помощью Enterprise Manager в SQL Server:
Разверните группу серверов. Щелкните правой кнопкой мыши сервер и выберите "Свойства". На вкладке "Безопасность" в разделе "Уровень аудита" нажмите "Все" / "Успех" и т.д. (Требуется опция).
Вы должны остановить и перезапустить сервер, чтобы этот параметр вступил в силу.
Ответ 7
Как и в приведенных выше методах, но чтобы получить результат просто как одно значение для конкретного идентификатора базы данных (в этом примере это 6
)
select max(LastAccess)
from (
SELECT last_user_seek as LastAccess FROM sys.dm_db_index_usage_stats WHERE last_user_seek is not null and [database_id]=6
union
SELECT last_user_lookup as LastAccess FROM sys.dm_db_index_usage_stats WHERE last_user_seek is not null and [database_id]=6
union
SELECT last_user_seek as LastAccess FROM sys.dm_db_index_usage_stats WHERE last_user_seek is not null and [database_id]=6
union
SELECT last_user_update as LastAccess FROM sys.dm_db_index_usage_stats WHERE last_user_seek is not null and [database_id]=6
) UserAccess