Tres pasos muy rápidos para comenzar:
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')
Le indicará la última vez que se utilizó cada índice, incluido el índice agrupado. Por lo tanto, al menos dé una idea de a qué tablas se accede (y cuáles no)
2) Active una sesión de eventos extendidos (o el rastreo de Profiler del lado del servidor si está ejecutando pre-SQL 2012) durante aproximadamente una hora mientras se usa la aplicación. También puede pedirle a un usuario que realice varias acciones en la aplicación en un orden específico para que pueda correlacionarlo con el seguimiento / sesión.
Una sugerencia útil: si puede modificar la cadena de conexión que usa la aplicación, agregue "; Nombre de la aplicación = AppNameGoesHere" para que pueda ejecutar un filtrado de rastreo en ese Nombre de aplicación en particular. Buena práctica de todos modos.
3) Obtenga una versión de la aplicación que funcione en un servidor que no sea de producción. Desarrolle una lista de pruebas basadas en el comportamiento para la aplicación ("Cuando el usuario hace clic en el botón Nuevo elemento, crea un nuevo elemento para ese usuario", etc.) Comience a eliminar los objetos que considera que no tienen relación con las pruebas al cambiarles el nombre. (Uso un formato como objectName_DEPRECATED_YYYYMMDD, siendo la fecha el día que planeo eliminarlo). Vuelva a verificar todas sus pruebas.
Mediante una combinación de la sesión de Eventos extendidos, el DMV de uso del índice y su eliminación suave, debería poder identificar los objetos principales que utiliza la aplicación y un buen consenso general sobre qué objeto hace qué.
¡Buena suerte!