Die SQL Server-Datenbank kann nicht aus einer vollständigen Sicherung wiederhergestellt werden, die Protokollverarbeitung schlägt fehl, die Datenbank wird wiederhergestellt


14

Ich versuche, eine Datenbank für Entwicklungszwecke auf dem lokalen SQL Server Developer Edition 12.0.2000.8 meines PCs einzurichten. Ich habe eine vollständige Datenbanksicherung und separate Nur-Transaktionsprotokoll-Sicherungsdateien, die über das Netzwerk an mich gesendet wurden.

Beim Versuch, eine vollständige Sicherung wiederherzustellen, wird nach einiger Zeit (etwa 1 Stunde, die Datenbank hat eine Größe von etwa 270 GB) eine Fehlermeldung angezeigt:

System.Data.SqlClient.SqlError: Beim Verarbeiten des Protokolls für die Datenbank 'Datenbankname' ist ein Fehler aufgetreten. Wenn möglich, stellen Sie sie von der Sicherung wieder her. Wenn keine Sicherung verfügbar ist, muss das Protokoll möglicherweise neu erstellt werden. (Microsoft.SqlServer.SmoExtended)

Danach befindet sich die Datenbank im Status 'Restoring ..'.

Ich wollte so etwas wie laufen (habe es von dieser Frage)

ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;

DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;

dagegen, aber ich kann natürlich nicht, da sich die Datenbank im Status "Wiederherstellen ..." befindet. Ein Neustart des Wiederherstellungsprozesses führt zur gleichen Fehlermeldung, und das Löschen und erneute Wiederherstellen hat auch nicht geholfen.

Wie bringe ich die Datenbank zum Laufen? Transaktionskonsistenz ist mir egal.

Das automatisch generierte SSMS-Wiederherstellungsskript:

  USE [master]
  RESTORE DATABASE [database_name] FROM  DISK = N'D:\database_name.bak' WITH  FILE = 1,
  MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
  MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
  MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
  NOUNLOAD,
  STATS = 5

  GO

Das Ergebnis der von @Craig Efrein vorgeschlagenen Abfrage

Das Protokoll kann nicht neu erstellt werden, da beim Herunterfahren der Datenbank Transaktionen / Benutzer geöffnet waren, kein Prüfpunkt für die Datenbank aufgetreten ist oder die Datenbank schreibgeschützt war. Dieser Fehler kann auftreten, wenn die Transaktionsprotokolldatei aufgrund eines Hardware- oder Umgebungsfehlers manuell gelöscht wurde oder verloren ging.


Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Paul White setzt Monica wieder ein

Antworten:


2

Aus den in den Chat verschobenen Kommentaren ergibt sich folgende Anmerkung aus dem OP:

Ich habe gerade versucht, es über GUI anzuhängen. Als ich die .mdf-Datei auswählte, identifizierte das SSMS, dass die Datenbank aus 3 Dateien bestand (Daten, Index, Protokoll), aber obwohl ich WITH MOVE wiederherstellte, sagten die Datenbankdetails über den Dateipfad es falsch! Also habe ich sie nur auf die alte Protokoll- / Daten- / Indexdatei hingewiesen und ... Die Datenbank ist online.


-3

Wechseln Sie in den Einzelbenutzermodus und stellen Sie ihn wieder her.

Beispiel: Bei
der ersten Wiederherstellung wird die Option NORECOVERY verwendet, damit zusätzliche Wiederherstellungen durchgeführt werden können. Mit dem zweiten Befehl wird das Transaktionsprotokoll wiederhergestellt und die Datenbank für den Endbenutzer online geschaltet.

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO

1
Die Frage bezieht sich auf eine einzelne RESTORE DATABASE-Anweisung. Es wird keine separate Wiederherstellung des Transaktionsprotokolls durchgeführt. Es ist wahrscheinlich, dass die Quelldatenbank und / oder die Sicherungsdatei beschädigt sind.
Bryan
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.