Trzy bardzo szybkie kroki na początek:
1)
USE DatabaseName
SELECT [TableName] = OBJECT_NAME(object_id),
last_user_update, last_user_seek, last_user_scan, last_user_lookup
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID('DatabaseName')
Informuje o ostatnim użyciu każdego indeksu, w tym indeksu klastrowego. Więc przynajmniej daj smak, do którego tabele są otwierane (a które nie).
2) Włącz sesję zdarzeń rozszerzonych (lub śledzenie Profiler po stronie serwera, jeśli korzystasz z wersji wcześniejszej niż SQL 2012) na około godzinę, gdy aplikacja jest używana. Możesz także poprosić użytkownika o wykonanie różnych działań w aplikacji w określonej kolejności, abyś mógł skorelować go ze śledzeniem / sesją.
Pomocna sugestia: jeśli możesz zmodyfikować ciąg połączenia, którego aplikacja używa w ogóle, dołącz „; Nazwa aplikacji = AppNameGoesHere”, abyś mógł uruchomić filtrowanie śledzenia dla tej konkretnej nazwy aplikacji. W każdym razie dobra praktyka.
3) Pobierz wersję aplikacji działającą na serwerze nieprodukcyjnym. Opracuj listę testów opartych na zachowaniu dla aplikacji („Gdy użytkownik kliknie przycisk Nowy element, tworzy nowy element dla tego użytkownika” itp.) Rozpocznij łagodne usuwanie obiektów, które według ciebie nie mają wpływu na testy, zmieniając ich nazwy (Używam formatu typu objectName_DEPRECATED_YYYYMMDD - przy czym data jest dniem, w którym planuję go faktycznie usunąć.) Ponownie zweryfikuj wszystkie testy.
Dzięki połączeniu sesji Extended Events, użycia indeksu DMV i miękkiego usuwania, powinieneś być w stanie zidentyfikować główne obiekty używane przez aplikację i mieć dobrą ogólną zgodność co do tego, który obiekt robi co.
Powodzenia!