Wenn eine Datenbank dauerhaft von einer Instanz getrennt ist, sollten Bereinigungsaufgaben ausgeführt werden?
10
Wenn eine Datenbank dauerhaft von einer Instanz getrennt ist, sollten Bereinigungsaufgaben ausgeführt werden?
Antworten:
Wenn Sie eine Datenbank von einer Instanz trennen, müssen Sie die Datei auf Betriebssystemebene löschen. Der sicherere Ansatz besteht darin, stattdessen die Datenbank zu löschen.
Ich schlage vor, eine endgültige Sicherung der Datenbank zu erstellen, nachdem Sie sie in den schreibgeschützten Modus versetzt haben (da dadurch sichergestellt wird, dass während der Sicherung keine Aktivität stattfindet). Anschließend entfernen Sie sie mithilfe eines Befehls " Datenbank löschen" von Ihrem System .
Der vollständige Befehlssatz würde wie folgt aussehen:
Danach möchten Sie nach Jobs suchen, die Skripts für die Datenbank ausgeführt haben. Ich würde vorschlagen, dass Sie nur abwarten, was fehlschlägt (danach können Sie den Job ausschreiben / löschen), da es zahlreiche Möglichkeiten gibt, wie ein Job auf eine Datenbank verweisen kann (von denen nicht alle leicht zu identifizieren sind).
Schließlich möchten Sie alle Benutzer aus der Instanz entfernen, die nur Zugriff auf diese Datenbank hatten. Dieses Skript sollte identifizieren, wer diese Benutzer sind, obwohl Max 'Version viel sauberer ist (ich habe nicht bemerkt, dass er einen Ansatz veröffentlicht hat, bis ich meine Antwort so bearbeitet habe, dass er diesen enthält):
quelle
Ich habe Johns Antwort positiv bewertet. Ich möchte nur einige Details zu anderen Elementen hinzufügen, die Sie möglicherweise bereinigen möchten.
SQL Server Agent-Jobs und -Warnungen verweisen möglicherweise auf die Datenbank. Durch das Aufräumen werden unnötige Fehler vermieden.
Entfernen Sie alle Anmeldungen, die speziell für die Datenbank erstellt wurden. Das folgende T-SQL identifiziert mögliche Kandidatenanmeldungen , die Sie möglicherweise untersuchen, um festzustellen , ob sie verwendet werden. Der Code identifiziert Anmeldungen, auf die von keiner Datenbank verwiesen wird.
Für diese Datenbank sind möglicherweise Sicherungsgeräte vorhanden. Obwohl das Entfernen nicht unbedingt erforderlich ist, sollten sie, wenn sie nicht verwendet werden, potenzielle zukünftige Verwirrung beseitigen.
Trigger auf Serverebene können auf die Datenbank verweisen.
Suchen Sie nach Wartungsplänen, die auf die Datenbank verweisen. Diese schlagen fehl, wenn sie nicht aktualisiert werden, um die fehlende Datenbank zu entfernen.
quelle
Alle wichtigen Punkte wurden bereits behandelt. Unten sind meine 2 Cent:
Das Trennen einer Datenbank ist niemals eine dauerhafte Lösung, da sie zum Verschieben der Datenbankdateien innerhalb des Servers oder auf einen anderen Server verwendet werden sollte. Das dauerhafte Entfernen einer Datenbank kann durch die Option Löschen in SSMS oder den Befehl DROP-Datenbank wie oben erwähnt erfolgen.
Normalerweise werden die Datenbanken, die absichtlich offline gehalten werden und weiterhin Warnungen generieren, von uns getrennt und aufbewahrt, bis sie dauerhaft entfernt (gelöscht) werden können.
Aufgabe vor dem Trennen: Führen Sie diese aus
sp_helpdb dbname
, um die Speicherorte der Dateien zu ermitteln.Bereinigungsaufgaben:
Neben Anmeldungen, Agentenjobs, Triggern und bereits erwähnten Punkten von Max können diese beiden auch betrachtet werden.
quelle