Verschieben Sie die Protokolldatei, ohne die Datenbank offline zu schalten

14

Ich muss eine Datenbankprotokolldatei auf eine neue Partition verschieben, ohne die Datenbank offline zu schalten.

Normalerweise wird dazu die Datenbank getrennt, die Protokolldatei verschoben und anschließend die Datenbank erneut angefügt.

Ist es möglich, dies zu tun, ohne die Datenbank selbst offline zu schalten, und wenn ja, wie?

Nicht ich
quelle

Antworten:

16

Mit einer Online-Datenbank ist dies nicht möglich.

Wenn Sie eine Datenbankdatei ( ALTER DATABASE ... MODIFY FILE) verschieben, erhalten Sie sogar die folgende Meldung:

Die Datei "YourFile" wurde im Systemkatalog geändert. Der neue Pfad wird beim nächsten Start der Datenbank verwendet .


Normalerweise wird dazu die Datenbank getrennt, die Protokolldatei verschoben und anschließend die Datenbank erneut angefügt.

Das ist nicht die "normale" oder akzeptierte Art und Weise, wie ich es tun würde. Um Datenbankdateien zu verschieben, gehe ich wie folgt vor:

  1. Führen Sie einen ALTER DATABASE-Befehl aus, um den Speicherort der Datei (en) zu ändern.
  2. Schalten Sie die Datenbank offline
  3. Verschieben Sie die Datei (en) physisch an den in Schritt 1 angegebenen neuen Speicherort
  4. Datenbank online schalten

Siehe diese Referenz in TechNet: Benutzerdatenbanken verschieben

Thomas Stringer
quelle
3

Wenn Sie die Dateien verschieben möchten, ohne die gesamte SQL Server-Instanz zu stoppen ( gemäß dem Verweis auf TechNet Move User Databases aus der Antwort von Thomas Stringer ), sollte die Reihenfolge wie folgt lauten:

ALTER DATABASE database_name SET OFFLINE;
... move the file(s) to new location
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
ALTER DATABASE database_name SET ONLINE;

Beachte zuerst die OFFLINE. Verschieben Sie anschließend die Dateien und teilen Sie SQL Server die neuen Speicherorte mit.

Wenn Sie die gesamte SQL Server-Instanz herunterfahren müssen (siehe "Umzug für geplante Datenträgerwartung"), sollten Sie zuerst die Speicherorte der Dateien ändern, damit beim Neustart der Instanz keine Probleme beim Suchen der Dateien auftreten in den neuen Standorten.

DocOc
quelle
1

Ich weiß, dass dies eine alte Frage ist, aber können Sie nicht einfach eine zweite Protokolldatei (die dann von der Datenbank anstelle des Originals verwendet wird) am neuen Speicherort hinzufügen und dann das Original verkleinern / entfernen?

ibmdba
quelle