qué - Identificación de objetos no utilizados en Microsoft SQL Server 2005
sql server documentation pdf (1)
Con SQL Server 2005, puede usar la vista de administración dinámica sys.dm_db_index_usage_stats. El nombre dice "índice" pero eso es un poco engañoso: cada tabla tiene una entrada aquí, incluso si no tiene ningún índice. Aquí hay una consulta útil de SQL Magazine:
SELECT
t.name AS ''Table'',
SUM(i.user_seeks + i.user_scans + i.user_lookups)
AS ''Total accesses'',
SUM(i.user_seeks) AS ''Seeks'',
SUM(i.user_scans) AS ''Scans'',
SUM(i.user_lookups) AS ''Lookups''
FROM
sys.dm_db_index_usage_stats i RIGHT OUTER JOIN
sys.tables t ON (t.object_id = i.object_id)
GROUP BY
i.object_id,
t.name
ORDER BY [Total accesses] DESC
Aquí está el artículo original:
http://www.sqlmag.com/Article/ArticleID/53878/sql_server_53878.html
Tenga en cuenta que estas estadísticas de uso se restablecen cuando se reinicia SQL Server.
Es una tarea trivial averiguar si un objeto es referenciado por otra cosa o no. Lo que me gustaría hacer es identificar si realmente se está usando o no.
Mi solución originalmente involucraba una combinación de una tabla que contenía una lista de objetos en la base de datos y un trabajo por hora.
El trabajo hizo dos cosas. Primero, buscó nuevos objetos que se habían agregado a la base de datos desde la última ejecución. En segundo lugar, miró el caché de objetos de sql. Si un objeto de la tabla se incluyó en la caché, se marcó en la tabla como "visto" recientemente en uso.
Al final de un período de seis meses o lo que sea, se examinaron los contenidos de la tabla. Cualquier cosa mencionada en la tabla que no se haya visto desde que empecé a monitorear probablemente fue segura para hacer una copia de seguridad y eliminarla.
Claro, existe la posibilidad de objetos que solo se usan, por ejemplo, una vez al año o lo que sea, pero parece que funcionan en su mayor parte.
Aunque fue un poco doloroso trabajar con él.
Hay alrededor de media docena de bases de datos con las que estoy trabajando, la mayoría de las cuales tienen montones de tablas heredadas, que permanecen mucho tiempo después de que sus creadores originales pasaran a otras compañías.
Lo que estoy buscando es un método bastante confiable para hacer un seguimiento de cuándo se llama a un objeto (tabla, vista, procedimiento almacenado o función).
Para aquellos de ustedes que actualmente monitorean este tipo de cosas, ¿qué método / código usan y lo recomendarían?