Question

Je travaille avec SQL Server 2000 base de données qui a probablement quelques dizaines de tables qui ne sont plus accessibles.Je voudrais effacer les données que nous n'avons plus besoin d'être le maintien de la, mais je ne suis pas sûr de savoir comment identifier les tables pour le retirer.

La base de données est partagée par plusieurs applications différentes, donc je ne peux pas être 100% convaincu que l'examen de ces va me donner une liste complète de tous les objets qui sont utilisés.

Ce que j'aimerais faire, si c'est possible, est d'obtenir une liste de tables qui n'ont pas été accessibles à tous pour une certaine période de temps.Pas de lit, pas d'écrit.Comment devrais-je m'approche de cela?

Était-ce utile?

La solution

MSSQL2000 ne vais pas vous donner ce genre d'informations.Mais d'une façon, vous pouvez identifier ce que les tables SONT utilisés (et puis en déduire celles qui ne le sont pas) est d'utiliser le générateur de profils SQL, pour enregistrer toutes les requêtes accéder à une base de données.Configurer le profiler pour enregistrer les résultats d'une nouvelle table, puis vérifier les requêtes sont enregistrées pour trouver toutes les tables (et des points de vue, sps, etc) qui sont utilisés par vos applications.

Une autre façon je pense que vous pourriez vérifier si il y a un "écrit" est d'ajouter une nouvelle colonne de type timestamp à chaque table, et un déclencheur que les mises à jour de colonne à chaque fois il y a une mise à jour ou un insert.Mais gardez à l'esprit que si vos applications ne requêtes du type

select * from ...

ensuite, ils recevront une nouvelle colonne et qui pourraient vous causer des problèmes.

Autres conseils

Une autre suggestion pour le suivi des tableaux qui ont été écrits à l'est d'utiliser Porte rouge SQL Journal de Sauvetage (gratuit).Cet outil plonge dans le journal de la base de données et vous montrera tous les insertions, mises à jour et des suppressions.La liste est entièrement consultable, aussi.

Il ne répond pas à vos critères de recherche lit dans la base de données, mais je pense que le générateur de profils SQL technique vous permet d'obtenir une idée juste autant que ça se passe.

Si vous avez lastupdate colonnes vous pouvez vérifier l'écrit, il n'y a vraiment pas de moyen facile de vérifier pour les lectures.Vous pouvez exécuter profiler, enregistrer la trace d'une table et de vérifier

Ce que je fais habituellement est de renommer la table en préfixant avec un underscrore, quand les gens commencent à crier je viens de le renommer en arrière

Si par pas utilisé, vous dire que votre demande n'a pas plus de références pour les tableaux en question et que vous utilisez sql dynamique, vous pouvez faire une recherche pour les noms de tables dans votre application, si elles n'existent pas disparaitre.

J'ai également retournée tous les sprocs, des fonctions, etc.dans un fichier texte et fait une recherche pour les noms de table.Si pas trouvé, ou trouvés dans les procédures qui devront être supprimés, sauter à l'écart.

Il suffit de supprimer et de voir si un utilisateur se plaint à ce sujet ;)

Il ressemble à l'utilisation du Profileur est d'aller travailler.Une fois que j'ai laisser tourner pendant un certain temps, je devrais avoir une bonne liste de tables utilisées.Ceux qui n'utilisent pas leurs tables de tous les jours peut probablement attendre à être restauré à partir de la sauvegarde.Merci, les gars.

Probablement trop tard pour aider mogrify, mais pour quelqu'un de faire une recherche;Je recherche pour tous les objets à l'aide de cet objet dans mon code, puis dans SQL Server en exécutant ceci :

select distinct '[' + object_name(id) + ']'
de syscomments
où le texte like '%MY_TABLE_NAME%'

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top