Как вы в последний раз обращались к базе данных? - PullRequest
22 голосов
/ 03 апреля 2009

В SQL Server 2005 вы можете легко определить, когда кто-то последний раз обращался к базе данных.

Ответы [ 7 ]

21 голосов
/ 25 ноября 2010
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.

11 голосов
/ 26 января 2017

Чтобы расширить ответ Джеймса Аллена:

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

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

6 голосов
/ 09 сентября 2014

Обнаружено это в 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
1 голос
/ 21 апреля 2017

Аналогично вышеописанным методам, но для получения результата просто в виде отдельного значения для определенного идентификатора базы данных (в данном примере это 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
1 голос
/ 03 апреля 2009

Вам необходимо настроить аудит или настроить трассировку сервера SQL заранее.

0 голосов
/ 03 апреля 2009

SQL Server может регистрировать информацию о событиях для попыток входа в систему, и вы можете просматривать ее просмотрев журнал ошибок. Включая уровень аудита SQL Server.

выполните следующие действия, чтобы включить аудит всех / успешных соединений с Enterprise Manager в SQL Server:

Развернуть группу серверов. Щелкните правой кнопкой мыши сервер и выберите пункт «Свойства». На вкладке «Безопасность» в разделе «Уровень аудита» выберите все / успех и т. Д. (Обязательно). опция).

Вы должны остановить и перезапустить сервер, чтобы этот параметр вступил в силу

0 голосов
/ 03 апреля 2009

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

-Adam

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