SQL: Które bazy są używane!?

20-mar-2015

 

Jeśli podejrzewasz, że część baz danych na serwerze wydaje ci się nieużywana, to pomocne może być poniższe zapytanie. SQL po starcie, ilekroć zapytanie skorzysta z indeksów, zapisuje informację o tym fakcie w sys.dm_db_index_usage_status. Jeśli serwer pracuje już miesiąc a w wyniku widzisz NULL w polach daty ostatniego wykorzystania indeksu, to może ta baza już nie jest przez nikogo wykorzystywana… Pamiętajmy jednak, że widok ten zeruje się po restarcie serwera, więc przy podejmowaniu decyzji o usunięciu bazy, dobrze byłoby sprawdzić wykorzystanie jeszcze przez sesję profilera, a przed usunięciem na jakiś czas przełączyć bazy w tryb offline. Potraktuj to zapytanie tylko jako wstęp do badania, czy bazy są wykorzystywane.

SELECT
d.name,
MAX(user_seeks) AS MaxUserSeeks,
MAX(user_scans) AS MaxUserScans,
MAX(user_lookups) AS MaxUserLookups,
MAX(user_updates) AS MaxUserUpdates,
MAX(last_user_seek) AS MaxUserSeekDate,
MAX(last_user_scan) AS MaxUserScanDate,
MAX(last_user_lookup) AS MaxUserLookupDate,
MAX(last_user_update) AS MaxUserUpdateDate
FROM
sys.databases d
LEFT JOIN
sys.dm_db_index_usage_stats ius
ON ius.database_id = d.database_id
GROUP BY d.name
ORDER BY d.name

Komentarze są wyłączone

Autor: Rafał Kraik