2010-03-01 15 views

Respuesta

7

Usted podría tratar de comprobar los resultados de la consulta de la sys.dm_db_index_usage_stats vista dinámica de gestión de la siguiente manera:

SELECT * 
FROM sys.dm_db_index_usage_stats 
WHERE [database_id] = DB_ID() 
    AND [object_id] = OBJECT_ID('TableName') 

Esto devolverá cosas como el last_user_seek, escanear y fechas de actualización en los índices de la tabla.

Sin embargo, tenga en cuenta que las estadísticas de la vista de administración dinámica se restablecen cuando se reinicia el servidor. Cuanto más tiempo haya estado funcionando el servidor, más confianza tendrá si los registros no muestran actividad.

yo personalmente también sería comprobar todo el código fuente para comprobar si hay referencias a la tabla en cuestión, y buscando todos los sprocs/UDF de referencias demasiado (se puede utilizar SQL Search from Red Gate para hacer esto - es gratis)

+0

Esto es exactamente lo que estaba buscando. ¡Gracias! : o) –

0

Si esto es importante para su (s) aplicación (es) y/o empresa, y las tablas se diseñaron correctamente, entonces cada tabla debe tener una columna llamada algo como 'LastModifiedTime'. Puede consultar esta tabla para determinar qué tablas están obsoletas.

+0

Desafortunadamente, no diseñé la base de datos inicial. Por lo tanto, me preguntaba si hay algo en las tablas de la base de datos sys que pueda consultar para averiguar qué tablas ya no se usan o si no se han utilizado por un tiempo. –

1

Si cualquiera está buscando todas las tablas no utilizadas en una base de datos (más la solicitud del título que el cuerpo de la pregunta), this guy tenía una buena consulta para traer todas las tablas inalteradas en una base de datos. En este caso, "inalterado" es cualquier tabla sin una entrada en sys.dm_db_index_usage_stats (nuevamente, como con la respuesta de AdaTheDev, solo desde el último reinicio del servidor sql).

SELECT OBJECTNAME = Object_name(I.object_id), 
     INDEXNAME = I.name, 
     I.index_id 
FROM sys.indexes AS I 
     INNER JOIN sys.objects AS O 
       ON I.object_id = O.object_id 
WHERE Objectproperty(O.object_id, 'IsUserTable') = 1 
     AND I.index_id NOT IN (SELECT S.index_id 
           FROM sys.dm_db_index_usage_stats AS S 
           WHERE S.object_id = I.object_id 
            AND I.index_id = S.index_id 
            AND database_id = Db_id(Db_name())) 
ORDER BY objectname, 
      I.index_id, 
      indexname ASC 
Cuestiones relacionadas