Y a-t-il un moyen de découvrir lorsque les données ont été entrées dans une table? J'essaie de trouver des tables obsolètes dans ma base de données et j'aimerais savoir s'il existe un simple script que je peux courir? P>
4 Réponses :
Si cela est important pour votre ou vos applications et / ou votre société, et que les tables ont été conçues correctement, chaque table doit avoir une colonne appelée quelque chose comme «DernierModifiedtime». Vous pouvez interroger cette table pour déterminer quelles tables sont obsolètes. p>
Malheureusement, je n'ai conçu pas la base de données initiale. Donc, je me demandais s'il y a quelque chose dans les tables de base de données SYS que je pourrais interroger afin de déterminer quelles tables ne sont plus utilisées ou n'ont pas été utilisées depuis un moment.
Vous pouvez essayer de vérifier les résultats d'interroger le sys.dm_db_index_usage_stats Gestion de la gestion dynamique comme ceci: Ceci renvoie des choses comme les dates Last_user_seek, Numériser et mettre à jour les dates sur les index sur la table. P> howvever, méfiez-vous comme les statistiques pour La vue de gestion dynamique est réinitialisée lorsque le serveur est redémarré. Plus le serveur est en cours d'exécution, plus vous pouvez avoir confiance si les enregistrements ne montrent aucune activité. P> Je vérifiez personnellement tout le code source pour vérifier les références à la table en question et la recherche Tous les Sprates / UDFS pour les références également (vous pouvez utiliser Recherche SQL de la porte rouge a > Pour ce faire - c'est gratuit) p> p>
Ceci est exactement ce que je cherchais. Merci! : o)
Si quelqu'un recherche toutes les tables non utilisées dans une base de données (plus de la demande du titre que l'organe de la question), Ce gars avait une bonne requête pour apporter toutes les tables non allées dans un base de données. Dans ce cas, "Unaltered" est une table sans entrée dans sys.dm_db_index_usage_stats code> (à nouveau, comme avec la réponse de AdatheDev, seulement depuis le dernier redémarrage du serveur 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
La dernière fois qu'il a été interrogé: la dernière fois mis à jour: p>