Frage

Ich arbeite mit einer SQL Server 2000-Datenbank, die wahrscheinlich ein paar Dutzend Tabellen enthält, auf die nicht mehr zugegriffen wird.Ich würde gerne die Daten löschen, die wir nicht mehr verwalten müssen, bin mir aber nicht sicher, wie ich ermitteln kann, welche Tabellen entfernt werden sollen.

Die Datenbank wird von mehreren verschiedenen Anwendungen gemeinsam genutzt, daher kann ich nicht hundertprozentig sicher sein, dass ich bei der Durchsicht dieser Anwendungen eine vollständige Liste der verwendeten Objekte erhalte.

Wenn es möglich ist, möchte ich eine Liste der Tabellen erhalten, auf die seit einiger Zeit überhaupt nicht zugegriffen wurde.Keine Lesevorgänge, keine Schreibvorgänge.Wie soll ich das angehen?

War es hilfreich?

Lösung

MSSQL2000 liefert Ihnen diese Art von Informationen nicht.Eine Möglichkeit, herauszufinden, welche Tabellen verwendet werden (und daraus abzuleiten, welche nicht verwendet werden), besteht jedoch darin, den SQL Profiler zu verwenden, um alle Abfragen zu speichern, die an eine bestimmte Datenbank gehen.Konfigurieren Sie den Profiler so, dass er die Ergebnisse in einer neuen Tabelle aufzeichnet, und überprüfen Sie dann die dort gespeicherten Abfragen, um alle Tabellen (und Ansichten, SPS usw.) zu finden, die von Ihren Anwendungen verwendet werden.

Ich denke, Sie können auch überprüfen, ob es „Schreibvorgänge“ gibt, indem Sie jeder Tabelle eine neue Zeitstempelspalte und einen Trigger hinzufügen, der diese Spalte jedes Mal aktualisiert, wenn eine Aktualisierung oder Einfügung erfolgt.Beachten Sie jedoch, dass Ihre Apps Abfragen dieser Art durchführen

select * from ...

Dann erhalten sie eine neue Spalte, was zu Problemen führen kann.

Andere Tipps

Ein weiterer Vorschlag zum Verfolgen von Tabellen, in die geschrieben wurde, ist die Verwendung von Red Gate SQL Log Rescue (frei).Dieses Tool taucht in das Protokoll der Datenbank ein und zeigt Ihnen alle Einfügungen, Aktualisierungen und Löschungen an.Die Liste ist auch vollständig durchsuchbar.

Es erfüllt nicht Ihre Kriterien für die Recherche von Lesevorgängen in der Datenbank, aber ich denke, die SQL Profiler-Technik wird Ihnen diesbezüglich eine gute Vorstellung vermitteln.

Wenn Sie Lastupdate-Spalten haben, die Sie auf Schreibvorgänge prüfen können, gibt es wirklich keine einfache Möglichkeit, auf Lesevorgänge zu prüfen.Sie können den Profiler ausführen, die Ablaufverfolgung in einer Tabelle speichern und dort einchecken

Normalerweise benenne ich die Tabelle um, indem ich ihr einen Unterstrich voranstelle. Wenn die Leute anfangen zu schreien, benenne ich sie einfach wieder um

Wenn „nicht verwendet“ bedeutet, dass Ihre Anwendung keine Verweise mehr auf die betreffenden Tabellen hat und Sie dynamisches SQL verwenden, können Sie in Ihrer App nach den Tabellennamen suchen. Wenn sie nicht vorhanden sind, werden sie weggeblasen.

Ich habe auch alle Sprocs, Funktionen usw. ausgegeben.in eine Textdatei kopiert und nach den Tabellennamen gesucht.Wenn sie nicht gefunden werden oder in Prozeduren gefunden werden, die ebenfalls gelöscht werden müssen, vernichten Sie sie.

Löschen Sie sie einfach und schauen Sie, ob sich ein Benutzer darüber beschwert ;)

Es sieht so aus, als würde die Verwendung des Profilers funktionieren.Sobald ich es eine Weile laufen gelassen habe, sollte ich eine gute Liste der verwendeten Tabellen haben.Jeder, der seine Tabellen nicht jeden Tag nutzt, kann wahrscheinlich warten, bis sie aus dem Backup wiederhergestellt werden.Danke, Leute.

Wahrscheinlich zu spät, um bei der Mogrifizierung mitzuhelfen, aber für jeden, der eine Suche durchführt;Ich würde nach allen Objekten suchen, die dieses Objekt in meinem Code verwenden, und dann in SQL Server Folgendes ausführen:

Wählen Sie eindeutig '[' + Objektname(id) + ']'
aus Systemkommentaren
wobei Text wie „%MY_TABLE_NAME%“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top