Warum sollte ich eine Datenbank offline schalten?


14

Aus welchen Gründen und in welchen Situationen würden Sie die Funktion "Offline schalten" verwenden ALTER DATABASE dbName SET OFFLINE.

Welche Aufgaben können Sie mit einer Offlinedatenbank ausführen? Welche Aufgaben können Sie nur mit einer Offline-Datenbank ausführen?

Antworten:


15

Sie können die MDF-Datei auf einen anderen Server verschieben, um sie online zu schalten.


4
+1 oder ein anderes Laufwerk / Ordner / SAN ...
Chris S

Ist das die einzige Verwendung für "Offline schalten"?
Greg B

5
Nein, mir fallen noch andere Gründe ein. Stellen Sie sich vor, Sie haben mehrere Datenbanken für mehrere Anwendungen. Eine dieser Anwendungen erhält ein Upgrade der Front-End-Anwendung (Web-App, Client, wer weiß). Sie möchten den Zugriff auf die Datenbank während des Upgrades für jeden deaktivieren, aber nicht den gesamten Server herunterfahren wegen der anderen Datenbanken. Das könnte ein Grund sein, es offline zu schalten. Ich bin sicher, Ihre Vorstellungskraft könnte auch andere Gründe haben.
mfinni

Meine Vorstellungskraft kann ich nicht fürchten, daher die Frage. Ich habe nicht gedacht, dass Sie eine Datenbank im Offlinemodus ändern können. Daher kann ich nicht erkennen, wie das Deaktivieren der Datenbank den Aktualisierungsprozess unterstützt
Greg B,

2
Greg B - Ich habe ausdrücklich gesagt, das Front-End zu aktualisieren, nicht die DB selbst. In dem von mir beschriebenen Szenario bleibt der DB unverändert. Es wird offline geschaltet, um sicherzustellen, dass während des Übergangs niemand darauf zugreift.
mfinni

18

In Entwicklungs- / Staging-Umgebungen ist es manchmal hilfreich, eine Datenbank offline zu schalten, um sicherzustellen, dass Sie eine Verbindung mit der richtigen Instanz der Datenbank in der Anwendung herstellen und nicht irgendwo eine aufgebockte Verbindungszeichenfolge haben.

In dieser Situation ist es jedoch eine viel bessere Idee, unterschiedliche Datenbanknamen für die verschiedenen Umgebungen und einen Erstellungsprozess zu haben, der Ihre Verbindungszeichenfolgen automatisch konfiguriert ...

In ähnlicher Weise möchte ich Datenbanken für einen bestimmten Zeitraum offline schalten, bevor ich sie außer Betrieb nehme, und zwar in dem (nicht so) zufälligen Fall, dass sie aus irgendeinem Grund wieder online gehen müssen. Ich bin einige Male von Entwicklern gebissen worden, die Haken in einer meiner Datenbanken haben, von denen ich nichts weiß, wenn ich sie loswerden will. Das Offline-Schalten ist viel einfacher und zeitsparender als das Löschen und das Wiederherstellen bei Bedarf.

Eine andere Sache wäre eine Notfallsicherung. Ich musste das schon mal machen. Manchmal wird in Ihrer App ein böser Fehler gefunden, der Daten in Ihrer Datenbank beschädigt, auch wenn er nicht bösartig ist. Das Offline-Schalten der Datenbank ist eine schnelle Möglichkeit, die Blutung zu stoppen, bis Sie den Fehler identifiziert haben. Sie können es dann wieder online schalten, um den Schaden in der Datenbank zu bewerten.


2
Ich mag die Idee, vor dem Löschen offline zu gehen
Greg B

8
Dito. Ich habe viertausend Datenbanken in unseren Vorproduktionsumgebungen. Es ist manchmal schwer zu wissen, wem was gehört. Manchmal ist es die einzige Möglichkeit, das Gerät offline zu schalten und auf das Quietschen zu warten.
Michael Green

6

Während einige der hier gegebenen Antworten Ihnen einige Ideen dazu geben, was Sie mit einer Datenbank mit eingeschränktem Zugriff tun können, kann mit einer Datenbank, die offline ist, nicht viel getan werden. Sie können keine Daten usw. aktualisieren, aktualisieren, hinzufügen oder löschen.


2
Richtig. Wenn Sie in der Lage sein möchten, viel mit der Datenbank zu tun, sollten Sie sie in den Einzelbenutzermodus versetzen. Dann schränken Sie den Zugriff immer noch ein, können aber noch viel mehr.
Sean Howat

Sie können es nicht einmal umbenennen!
Dima Fomin

0

Mein übergeordneter Grund, den ich öfter an die DBAs verkaufen muss, als ich aufzählen möchte ...

"Das SAN muss repariert werden ... und nein, ich kann nicht einfach ein Laufwerk im laufenden Betrieb austauschen, die Rückwandplatine / Controller sind fehlerhaft."

DB-Instanzen verhalten sich sehr schlecht, wenn ihre Festplatten nicht mehr funktionieren.

Daher habe ich die SQL-Instanzen heruntergefahren, bevor ich das SAN offline geschaltet habe, und sie dann einzeln wiederhergestellt, damit sie keine Ressourcen bestreiten. Die erste Instanz beansprucht alle Clusterressourcen und wird zum Active DB-Knoten. Nachfolgende Instanzen werden ausgeführt als passive Knoten.


-3

Es gibt viele Gründe, warum Sie dies tun müssten ..

Zum Beispiel,

consider changing or upgrading the actual database program/binary...
consider changing or upgrading the schema or tables..
consider changing or upgrading index's..

Der wichtigste Punkt ..

Is taking a backup.. to get a perfect snapshot in time.. 

(In einigen Datenbanken erstellen Sie nur eine Sperre für alle Tabellen.)


+1, auch ältere DBMS zum Defragmentieren oder Verkleinern der DB.
Chris S

1
Betreff: "Ändern oder Aktualisieren des Schemas" aus der Onlinedokumentation "OFFLINE Die Datenbank wurde geschlossen, ordnungsgemäß heruntergefahren und als offline markiert. Die Datenbank kann nicht geändert werden, solange sie offline ist." Wie können Sie das Schema in dieser Situation aktualisieren?
Greg B

Tut mir leid. Ich bezog mich auf Änderungen an einer inaktiven Datenbank. Als MySQL-Follower ging ich davon aus, dass ein Upgrade für eine als offline markierte Datenbank durchgeführt werden würde. Daher gab es keine Probleme mit der Parallelität mit etwas anderem als der erforderlichen Änderung. Vielleicht können wir das dann
weglassen

2
Echte Datenbanken unterstützen echte Backups. Sie müssen nichts anderes als ein Online-Spielzeug mitnehmen, um ein perfektes, zeitlich konsistentes Backup zu erstellen. Eine db, die ein Schloss oder einen anderen dummen Mechanismus benötigt, ist ein Spielzeug. Ja wirklich. Alle wichtigen Datenbanken haben kein Problem mit vollständigen Sicherungen, die konsistent sind, während sie häufig verwendet werden.
TomTom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.