7
votes

Comment trouver des tables non utilisées dans SQL Server

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?


0 commentaires

4 Réponses :


0
votes

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.


1 commentaires

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.



8
votes

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: xxx

Ceci renvoie des choses comme les dates Last_user_seek, Numériser et mettre à jour les dates sur les index sur la table.

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é.

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 Pour ce faire - c'est gratuit)


1 commentaires

Ceci est exactement ce que je cherchais. Merci! : o)



1
votes

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 


0 commentaires

3
votes

La dernière fois qu'il a été interrogé: xxx

la dernière fois mis à jour: xxx


0 commentaires