web-dev-qa-db-de.com

Das Ende des Protokolls für die Datenbank "DBName" wurde nicht gesichert

Ich habe versucht, eine Datenbank mit der folgenden Abfrage wiederherzustellen:

ALTER DATABASE [DatabaseName] SET Single_User WITH Rollback Immediate GO
RESTORE DATABASE DatabaseName FROM DISK = 'C:\DBName-Full Database Backup'
ALTER DATABASE [DatabaseName] SET Multi_User GO

aber anstatt die Datenbank wiederherzustellen, erhalte ich den folgenden Fehler:

Meldung 3159, Ebene 16, Status 1, Zeile 2

Das Ende des Protokolls für die Datenbank "DatabaseName" wurde nicht gesichert. Verwenden BACKUP LOG WITH NORECOVERY, um das Protokoll zu sichern, wenn es Arbeit enthält, die Sie nicht verlieren möchten. Verwenden Sie die WITH REPLACE oder WITH STOPAT-Klausel der RESTORE-Anweisung, um den Inhalt des Protokolls einfach zu überschreiben. Nachricht 3013, Ebene 16, Status 1, Zeile 2 RESTORE DATABASE wird abnormal beendet.

39
tereško

Die Fehlermeldung, die Sie erhalten, sagt Ihnen genau, was Sie tun müssen, wenn Sie sich nicht um die vorhandene Datenbank oder das vorhandene Protokoll kümmern.

RESTORE DATABASE DAtabaseName FROM DISK = 'C:\DBName-Full Database Backup' 
WITH REPLACE

In SQL Server Management Studio (Aufgaben> Wiederherstellen) können Sie das WITH REPLACE Option, indem Sie die Seite "Optionen" auf der linken Seite öffnen und "Bestehende Datenbank überschreiben" ankreuzen.

91
tomfanning

Für diejenigen, die Management Studio Verwenden, sollte dies funktionieren:

enter image description here

22
Adil Malik

Alternativ können Sie das Datenbankwiederherstellungsmodell in Simple anstelle von Full ändern.

  1. Klicken Sie mit der rechten Maustaste auf die Datenbank
  2. Wählen Sie properties-> option
  3. Veränderung recovery model bis simple

Dann sollte das, was Sie geschrieben haben, fehlerfrei funktionieren.

Bei mir hat es gut funktioniert.

3
catcher

Alternativ können Sie das Datenbankwiederherstellungsmodell in "Einfach" anstelle von "Vollständig" ändern.

Klicken Sie mit der rechten Maustaste auf die Datenbank, wählen Sie "Eigenschaften", "Option" und ändern Sie "Wiederherstellungsmodell" in "Einfach".

Dann sollte das, was Sie geschrieben haben, fehlerfrei funktionieren.

2

Verwenden Sie BACKUP LOG WITH NORECOVERY, um das Protokoll zu sichern, wenn es Arbeit enthält, die Sie nicht verlieren möchten.

Verwenden Sie die WITH REPLACE- oder WITH STOPAT-Klausel der RESTORE-Anweisung, um nur den Inhalt des Protokolls zu überschreiben.

Wirklich, das ist die Antwort. Genau dort, in der Nachricht. Was möchten Sie tun? Sichern Sie den Schwanz, damit nichts verloren geht? Protokoll ersetzen, das nicht gesichert wurde? Ihr Anruf.

1
Remus Rusanu