mssql '5 (Zugriff verweigert.)' Fehler beim Wiederherstellen der Datenbank

74

Ich möchte eine Datenbank aus einer Datei (Aufgaben → Wiederherstellen → Datenbank; nachdem ich vom Gerät ausgewählt und Datei ausgewählt habe) über SQL Server Management Studio wiederherstellen.

Danach erhalte ich folgende Fehlermeldung:

Das Betriebssystem hat beim Versuch 'RestoreContainer :: ValidateTargetForCreation' unter 'E: \ Programme \ Microsoft SQL Server \ MSSQL10.MSSQLSERVER \ MSSQL \ DATA \ XXXXXX.mdf' den Fehler '5 (Zugriff verweigert.)' Zurückgegeben. Meldung 3156, Ebene 16, Status 8, Server XXXX, Zeile 2

Wie behebe ich dieses Problem? Ist es ein Sicherheitsfehler?

2xMax
quelle

Antworten:

91

Das Konto, unter dem der SQL Server ausgeführt wird, hat keinen Zugriff auf den Speicherort, an dem Sie die Sicherungsdatei haben oder versuchen, die Datenbank wiederherzustellen. Mit SQL Server Configuration Manager können Sie ermitteln, mit welchem ​​Konto die SQL Server-Instanz ausgeführt wird, und dann sicherstellen, dass das Konto die vollständige Kontrolle über die BAK-Datei und den Ordner hat, in dem die MDF wiederhergestellt wird.

Geben Sie hier die Bildbeschreibung ein

SQLMenace
quelle
2
Ich habe den Benutzer "NT Service \ MSSQLSERVER" zur Liste der erlaubten "Gruppen- oder Benutzernamen" hinzugefügt und es hat funktioniert
slava
177

Ich hatte vor kurzem dieses Problem. Die Lösung für mich bestand darin, auf die Seite "Dateien" des Dialogfelds "Datenbank wiederherstellen" zu gehen und "Alle Dateien in Ordner verschieben" zu aktivieren.

Dialogfeld "Datenbank wiederherstellen"

Jamie Humphries
quelle
3
Danke dafür. Dies war in meinem Fall die beste Lösung, da sich die Quellendatenbank auf einem Laufwerk befand, das ich aus dem System entfernen möchte. Der Umzug war ein notwendiger Bestandteil des Umzugs.
Michael Grant
Vielen Dank! Dies löste das Problem. Ich habe dieses Problem aufgrund derselben Datei auf mehreren Benutzerkonten festgestellt und im Administratormodus ausgeführt.
Jordan_Walters
Funktioniert super für mich, danke!
Danny Michaeli
19

In meinem Fall war die Lösung recht einfach und direkt.

Ich musste nur den Wert des log On AsWertes ändern .

Schritte zur Lösung

  1. Öffnen Sql Server Configuration manager
  2. Richtig click on SQL Server (MSSQLSERVER)
  3. Gehe zu Properties

Geben Sie hier die Bildbeschreibung ein

  1. Ändern Sie den log On AsWert inLocalSystem

Geben Sie hier die Bildbeschreibung ein

Ich hoffe, das hilft dir auch :)

Vikash Pandey
quelle
3

Ich bin gerade auf dasselbe Problem gestoßen, hatte aber eine andere Lösung. Im Wesentlichen hatte ich sowohl SQL Server als auch SQL Server Express auf meinem Computer installiert. Dies funktionierte nicht, als ich versuchte, in SQL Express wiederherzustellen, funktionierte jedoch korrekt, als ich es in SQL Server wiederherstellte.

Ramone Hamilton
quelle
+1 Dies kann ein besonders unangenehmes Szenario sein, das dazu führt, dass beim Debuggen des Fehlers zu viel Zeit verschwendet wird
demongolem
1

Ich habe das obige Szenario ausprobiert und den gleichen Fehler 5 erhalten (Zugriff verweigert). Ich habe einen tiefen Tauchgang gemacht und festgestellt, dass die Datei .bak Zugriff auf das SQL-Dienstkonto haben sollte. Wenn Sie sich nicht sicher sind, geben Sie services.msc unter Start -> Ausführen ein und suchen Sie nach dem SQL Service-Anmeldekonto.

Gehen Sie dann zur Datei, klicken Sie mit der rechten Maustaste und wählen Sie in den Eigenschaften die Registerkarte Sicherheit. Bearbeiten Sie dann, um den neuen Benutzer hinzuzufügen.

Geben Sie schließlich die volle Erlaubnis, um vollen Zugriff zu gewähren.

Versuchen Sie dann von SSMS aus, die Sicherung wiederherzustellen.

Niroshanth
quelle
1
Sie haben noch nicht genug Repräsentanten, um einen Screenshot direkt anzuhängen. Fügen Sie den Link als Kommentar zu diesem Beitrag ein, und jemand wird ihn für Sie einfügen.
Nathan Tuggy
Dies ist die einzige Antwort mit Kontext, die für eine Instanz im Entity-Framework-Stil des Problems funktioniert, bei der meiner Meinung nach keine .BAK-Datei vorhanden ist. (Code First - Entity Framework - anfängliche Migration von Datenbank-Seeds) Sie sind sehr dankbar - ich habe Stunden damit verbracht, nach einer sinnvollen Antwort zu suchen!
Mitchb
1

Beim Versuch, die SQL 2008 R2-Sicherungsdatenbank in der SQL 2012-Datenbank wiederherzustellen, wurde der gleiche Fehler angezeigt. Ich denke, der Fehler ist auf unzureichende Berechtigungen zum Platzieren von .mdf- und .ldf-Dateien auf Laufwerk C zurückzuführen. Ich habe eine einfache Sache ausprobiert, dann ist es mir gelungen, sie erfolgreich wiederherzustellen.

Versuche dies:

Wechseln Sie im Fenster des Assistenten zum Wiederherstellen der Datenbank zur Registerkarte Dateien, und ändern Sie das Wiederherstellungsziel von C: auf ein anderes Laufwerk. Fahren Sie dann mit dem regulären Wiederherstellungsprozess fort. Es wird definitiv erfolgreich wiederhergestellt!

Hoffe das hilft dir auch. Prost :)

Raja Sekhar
quelle
0

Ich habe das gefunden und es hat bei mir funktioniert:

CREATE LOGIN BackupRestoreAdmin WITH PASSWORD='$tr0ngP@$$w0rd'
GO
CREATE USER BackupRestoreAdmin FOR LOGIN BackupRestoreAdmin
GO
EXEC sp_addsrvrolemember 'BackupRestoreAdmin', 'dbcreator'
GO
EXEC sp_addrolemember 'db_owner','BackupRestoreAdmin'
GO
Tom Stickel
quelle
Können Sie etwas näher erläutern, was das bewirkt?
Julian
Es ist 8 Jahre her ... aber es erstellt ein Login mit einem Passwort, dann einen Benutzer für dieses Login und fügt dann Rollen aus den sp_-Befehlen der Mitgliedsrolle und des Datenbankbesitzers hinzu. Dadurch kann der BackRestoreAdmin ein Datenbankkreator und ein Datenbankbesitzer sein
Tom Stickel
0

In meinem Fall musste ich das Kontrollkästchen Overwrite the existing database (WITH REPLACE)unter OptionsRegisterkarte auf Restore DatabaseSeite aktivieren .

Der Grund, warum ich diesen Fehler bekam: weil bereits eine MDF-Datei für die Datenbank vorhanden war und diese nicht überschrieben wurde.

Hoffe das wird jemandem helfen.

Neue Biene
quelle
0

Wenn Sie eine Datenbank anhängen, sehen Sie sich das Raster "Anzuhängende Datenbanken" und insbesondere die Spalte "Eigentümer" an, nachdem Sie Ihre MDF-Datei angegeben haben. Notieren Sie sich das Konto und erteilen Sie ihm die vollständigen Berechtigungen für MDF- und LDF-Dateien.

jgo
quelle
0

Ich hatte genau das gleiche Problem, aber mein Fix war anders - meine Firma verschlüsselt alle Dateien auf meinen Computern. Nach dem Entschlüsseln der Datei hatte MSSQL keine Probleme beim Zugriff und erstellte die Datenbank. Klicken Sie einfach mit der rechten Maustaste auf .bak-Datei -> Eigenschaften -> Erweitert ... -> Inhalte verschlüsseln, um Daten zu sichern. Entschlüsseln

Radoslaw Jurewicz
quelle
Ich bin mir nicht sicher, warum diese Antwort abgelehnt wurde. Ich hatte das gleiche Problem. Alle Berechtigungen waren in Ordnung, aber da die Datei als verschlüsselt markiert war, hat SQL den Zugriff beim Lesen von Inhalten aus der Datei verweigert.
JamieB
0

Das ist mir heute früher passiert. Ich war Mitglied der Administratorgruppe des lokalen Servers und habe ungehinderten Zugriff, oder ich dachte schon. Ich habe auch die Option "Ersetzen" angekreuzt, obwohl es in der Instanz keine solche Datenbank gibt.

Es wurde festgestellt, dass sich dort früher eine gleichnamige Datenbank befand und sich die MDF- und LDF-Dateien noch physisch in den Daten- und Protokollordnern des Servers befinden, die tatsächlichen Metadaten jedoch in den sys.databases fehlen. Das Dienstkonto von SQL Server kann die vorhandenen Dateien auch nicht überschreiben. Als ich herausfand, dass der Eigentümer der Dateien "unbekannt" ist, musste ich den Eigentümer auf die beiden oben genannten Dateien ändern, damit sie jetzt der Administratorgruppe des lokalen Servers gehören, und sie dann umbenennen.

Dann hat es endlich geklappt.

user1465073
quelle
0

Ich habe diesen Fehler erhalten, weil ich auf der Registerkarte "Dateien" des Fensters "Datenbank wiederherstellen" die Option "Alle Dateien in Ordner neu zuordnen" aktiviert habe, aber der Standardpfad auf meinem lokalen Computer nicht vorhanden war. Ich hatte die ldf / mdf-Dateien in einem anderen Ordner, nachdem ich geändert hatte, dass ich wiederherstellen konnte.

cheriejw
quelle
0

Das Konto hat keinen Zugriff auf den Speicherort für die Sicherungsdatei. Führen Sie die folgenden Schritte aus, um über Computer Manager problemlos auf den SQL Server-Konfigurationsmanager zuzugreifen

  1. Klicken Sie auf die Windows-Taste + R , um das Fenster Ausführen zu öffnen.
  2. Geben Sie compmgmt.msc im Feld Öffnen.
  3. Klicken Sie auf OK .
  4. Erweitern Sie Dienste und Anwendungen .
  5. Erweitern Sie SQL Server Configuration Manager .
  6. Ändern Sie das Benutzerkonto auf der Registerkarte Anmelden als .

Jetzt können Sie die Datenbank einfach wiederherstellen

reza.bm
quelle
0

Eine gute Lösung, die funktionieren kann, ist, zu Dateien> zu gehen und zu überprüfen, ob alle Dateien neu zugewiesen wurden

Dateien werden verschoben

DaFois
quelle
0

Die Lösung für mich bestand darin, beim Versuch, die Datenbank wiederherzustellen und den Pfad in den neuen Pfad zu ändern, in Optionen zu wechseln. Hier ist der Screenshot

David A.
quelle