Zu wissen, was in letzter Zeit aufgerufen wurde, hilft nur bei häufig aufgerufenen Dingen, und viele Objekte in einer komplexen Datenbank werden nicht so oft aufgerufen, werden aber dennoch benötigt. Ich kenne keinen einfachen Weg, um festzustellen, was nicht verwendet wird.
Was ich tun würde, ist Profiler auf meiner Entwickler- oder QA-Box zu starten und dann jede Anwendung, die darauf trifft, zu nehmen und die Funktionalität auszuführen. (Wenn Sie eine formelle Qualitätssicherung haben, hilft eine gute Reihe von Regressionstests dabei). Ich würde meine Ablaufverfolgung so einrichten, dass sie in eine Tabelle schreibt. Jetzt wissen Sie zumindest, was die Anwendungen aufrufen, und können sie aus der Liste streichen.
Stellen Sie sicher, dass jeder Job auf dem Produktserver einen entsprechenden Job auf Ihrem Testserver hat, und führen Sie ihn aus. Das sollte noch mehr finden.
Inzwischen ist Ihre Liste potenzieller SPs viel kleiner.
Ihre Liste der aktiven Tabellen sollte nur diejenigen enthalten, die in einem der Prozesse und Tabellen aufgeführt sind, von denen Sie wissen, dass Sie sie benötigen, z. B. Audittabellen. YoOu kann eine Liste von Potenzialen für die Beseitigung von dort erstellen.
Sobald Sie die Liste der zu eliminierenden Potenziale haben, werden Sie wahrscheinlich einige ziemlich offensichtliche wie usp_my_proc_Old sehen (wenn Sie einen USP_My_proc in der Datenbank haben). Das sind meine ersten Kandidaten, die eliminiert werden. Tabellen ohne Daten sind an dieser Stelle weitere offensichtliche Tabellen. Tabellen / Prozesse, die eindeutig auf eine Funktionalität verweisen, von der Sie wissen, dass sie entfernt wurde, sind die nächsten. Angenommen, Sie haben kürzlich die Funktionalität zum Speichern von Umfrageergebnissen durch ein neues Design ersetzt. Möglicherweise möchten Sie die Tabelle behalten (möglicherweise benötigen Sie die Daten), aber die Prozesse, die diese Tabelle aufrufen, sind wahrscheinlich alle veraltet und können gelöscht werden.
Abhängig von Ihren rechtlichen Einschränkungen möchten Sie möglicherweise keine Tabelle mit Daten entfernen. Wir haben kundenspezifische Daten für Kunden, die wir nicht mehr haben, da wir uns in einer regulierten Branche befinden und gelegentlich gebeten werden, Wirtschaftsprüfern, Aufsichtsbehörden und Anwälten Daten zur Verfügung zu stellen. Sie können diese Tabellen jedoch in eine andere Archivdatenbank verschieben, wenn Sie Ihre eigentliche Produktionsdatenbank bereinigen möchten.
Dann schauen Sie sich an, was sie tun. Sie können jeden Prozess entfernen, der nicht ausgeführt wird, insbesondere wenn eine der Tabellen, auf die er verweist, nicht mehr vorhanden ist. Wenn eine Tabelle ein Datumsfeld hat, gibt es aktuelle Daten? Wenn das Datenfeld das letzte Mal mit einem Datum gefüllt wurde, war dies ein guter Kandidat für eine Tabelle, die wir nicht mehr benötigen.
Sobald Sie eine Liste mit mehreren potenziellen Objekten zum Löschen haben, senden Sie die Liste an alle Ihre Entwickler und fragen Sie sie, ob sie die Tabelle / den Prozess verwenden oder wissen, wofür sie gedacht sind. Tun Sie dies nicht mit einer riesigen Liste von Tausenden von Objekten. Senden Sie nicht mehr als 10 bis 20 gleichzeitig und versuchen Sie, sie zu gruppieren, damit sie eindeutig zu verwandten Themen gehören.
Um potenzielle Probleme zu beseitigen, können Sie dem Prozess einen Protokollierungsprozess oder der Tabelle einen Protokollierungsauslöser hinzufügen und ein Datum festlegen, an dem das Objekt entfernt wird, wenn bis zu diesem Datum keine Einträge vorhanden sind.