it-swarm.com.de

Einzelbenutzermodus beim Wiederherstellen der Datenbank

Muss die Datenbank vor dem Wiederherstellen einer Datenbank in den Einzelbenutzermodus versetzt werden? Wenn ja, welcher ist vorzuziehen, wenn Sie den SQL Server in den Einzelbenutzermodus versetzen oder die Datenbank vor dem Wiederherstellen nur in den Einzelbenutzermodus versetzen! Vielen Dank.

3
SqlNovice

Sie müssten die SQL Server-Instanzen nur in den Einzelbenutzermodus versetzen, wenn Sie die Datenbank master wiederherstellen würden. Für user -Datenbanken müssen Sie sicherstellen, dass keine aktiven Verbindungen zu der Datenbank bestehen, die Sie wiederherstellen. Sie müssten entweder aktive SPIDs ermitteln und beenden (für die sich die Datenbank nicht im Einzelbenutzermodus befinden müsste) oder die Datenbank mithilfe einer der folgenden Methoden in den Einzelbenutzermodus versetzen (unter Bezugnahme auf einen Beitrag von Greg Robidoux Exklusiven Zugriff zum Wiederherstellen von SQL Server-Datenbanken erhalten :

ALTER DATABASE [Test4] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
OR 
ALTER DATABASE [Test4] SET SINGLE_USER WITH ROLLBACK AFTER 30 
OR 
ALTER DATABASE [Test4] SET SINGLE_USER WITH NO_WAIT 
  • MIT ROLLBACK IMMEDIATE - Diese Option wartet nicht auf den Abschluss von Transaktionen, sondern beginnt nur mit dem Rollback aller offenen Transaktionen
  • MIT ROLLBACK NACH nnn - Mit dieser Option werden alle geöffneten Transaktionen zurückgesetzt, nachdem nnn Sekunden auf den Abschluss der geöffneten Transaktionen gewartet wurde. In unserem Beispiel geben wir an, dass der Prozess 30 Sekunden warten soll, bevor offene Transaktionen zurückgesetzt werden.
  • WITH NO_WAIT - Mit dieser Option wird die Datenbank nur dann in den Einzelbenutzermodus versetzt, wenn alle Transaktionen abgeschlossen wurden. Es wartet für einen bestimmten Zeitraum und wenn die Transaktionen nicht abgeschlossen sind, schlägt der Prozess fehl. Dies ist der sauberste Ansatz, da keine Transaktionen zurückgesetzt werden, aber nicht immer funktioniert, wenn offene Transaktionen vorhanden sind.

Sobald die Datenbank in den Einzelbenutzermodus versetzt wurde, haben Sie exklusiven Zugriff auf die Datenbank und können die Wiederherstellung problemlos durchführen.

Hinweis: Wenn Sie die Option ROLLBACK verwenden, setzen Sie alle offenen Transaktionen zurück, die noch für die Datenbank vorhanden sind. Der Rollback-Prozess sollte problemlos funktionieren. Wenn Sie jedoch Transaktionen mit sehr langer Laufzeit ausführen, kann der Rollback-Prozess lange dauern. Beachten Sie daher, was auf Ihren Systemen ausgeführt wird. Bei Test- und Entwicklungssystemen sind die Transaktionen ohnehin nicht wichtig, da Sie eine Wiederherstellung durchführen. Daher sollte das Zurücksetzen von Dingen kein Problem darstellen. Sie müssen sich jedoch darüber im Klaren sein, dass das Zurücksetzen von Transaktionen mit langer Laufzeit einige Zeit in Anspruch nehmen kann.

7
Scott Hodgin

Sie können die Datenbank nicht wiederherstellen, wenn Sie mit dieser Datenbank verbunden sind. Es wird folgende Fehlermeldung angezeigt:

RESTORE kann die Datenbank 'my_db_name' nicht verarbeiten, da sie von dieser Sitzung verwendet wird

Dies bedeutet, dass Sie die Datenbank wiederherstellen sollten, die mit einer anderen Datenbank verbunden ist (empfohlen) master.

Wenn Sie jedoch die Datenbank von master in single_user (Vor der Wiederherstellung) einfügen, besteht die Möglichkeit, dass zwischen dem Einfügen in single_user Und dem Wiederherstellen eine Verbindung zu dieser Datenbank hergestellt wird.

Um diese Situation zu vermeiden, fügen Sie einfach Ihre Datenbank offline und nicht in single_user Ein:

alter database ... set offline with rollback immediate;
restore database ...;
4
sepupic