Я пытаюсь очистить некоторые серверы и хочу выяснить, к каким базам данных не обращались за последние 30 дней.Как я могу изменить свой запрос T-SQL, чтобы отображались только те базы данных, к которым не обращались в течение последних 30 дней?
Для дополнительной информации я также включаю, когда сервер был последний раз перезагружен.Это не очень актуально для этого вопроса.
Например, сегодня 10 октября.Любая база данных, к которой обращались с 10 сентября, я не хочу отображать в результатах моего запроса.
Вот мой текущий скрипт T-SQL, чтобы узнать, когда в последний раз обращались к базе данных на моем сервере:
SELECT
DB_NAME(sd.database_id) AS DatabaseName,
COALESCE(MAX(ius.last_user_seek), MAX(ius.last_user_scan),
MAX(ius.last_user_lookup), MAX(ius.last_user_update), '1/1/1900') AS LastAccessDate,
(SELECT create_date
FROM sys.databases
WHERE name = 'tempdb') AS LastServerRestart
FROM
sys.databases sd
LEFT JOIN
sys.dm_db_index_usage_stats ius ON ius.database_id = sd.database_id
WHERE
DB_NAME(sd.database_id) NOT IN ('tempdb', 'master', 'model', 'msdb')
GROUP BY
sd.database_id
ORDER BY
DatabaseName
Вот результаты этого запроса:
DatabaseName LastAccessDate LastServerRestart
--------------------------------------------------------------------------
AdventureWorks2016 2018-09-12 18:21:21.800 2018-09-12 18:21:10.727
AdventureWorksDW2016 2018-10-10 09:40:31.903 2018-09-12 18:21:10.727
Drake_Test 1900-01-01 00:00:00.000 2018-09-12 18:21:10.727
OLD_DB 1900-01-01 00:00:00.000 2018-09-12 18:21:10.727
Drake_Test_new 2018-10-10 14:20:17.943 2018-09-12 18:21:10.727
На основании этих результатов я бы хотел, чтобы только Drake_Test
и OLD_DB
были возвращены из этого запроса.Другие 3 базы данных были доступны за последние 30 дней.
Кроме того, основная проблема с изменением моего запроса T-SQL заключается в том, что когда я пытаюсь использовать столбец LastAccessDate
как часть предложения, он говорит, что это недопустимый столбец?