it-swarm.com.de

SQL Server-Wiederherstellungsfehler - Zugriff wird verweigert

Ich habe auf meinem lokalen Rechner eine Datenbank erstellt und dann eine Sicherung mit dem Namen tables.bak der Tabelle DataLabTables erstellt. 

Ich habe dieses Backup auf eine Remote-Maschine ohne diese Tabelle verschoben und versucht, eine Wiederherstellung durchzuführen, erhalte jedoch den folgenden Fehler:

System.Data.SqlClient.SqlError: Das Betriebssystem hat das .__ zurückgegeben. Fehler '5 (Zugriff wird verweigert.)' beim Versuch von 'RestoreContainer :: ValidateTargetForCreation' in 'c:\Program Dateien\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf '.

Wie lege ich meine Rechte fest, wenn dies das Problem ist?

139
cdub

Ich habe gerade dieses Problem mit SQL Server 2012 gehabt.

Es stellte sich heraus, dass ich nur das Kontrollkästchen "Alle Dateien in Ordner verschieben" im Abschnitt "Dateien" markieren musste:

 enter image description here

(Klicken Sie hier, um das Bild in voller Größe zu sehen)

Dies setzt natürlich voraus, dass Sie die richtige Version von SQL Server installiert haben.

420
Exile

Die Fehlermeldung besagt, dass beim Überprüfen des target (c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf) Ihrer Wiederherstellungsoperation ein Fehler aufgetreten ist.

Das hört sich an, wie:

a) Diese Datei ist bereits vorhanden (weil Sie sie bereits zuvor wiederhergestellt haben) und wird von SQL Server verwendet

oder

b) das Verzeichnis existiert überhaupt nicht

In Ihrer Frage haben Sie erwähnt, dass Sie eine Sicherung für diese Tabelle erstellt haben - so funktionieren SQL Server-Sicherungen nicht. Bei diesen Sicherungen handelt es sich immer um die gesamte Datenbank (oder mindestens eine oder mehrere Dateigruppen dieser Datenbank).

Meine Vermutung ist: Sie haben diese Datenbank bereits wiederhergestellt, und bei einer zweiten Wiederherstellung haben Sie das Kontrollkästchen "Vorhandene Datenbank überschreiben" in Ihrem Wiederherstellungsassistenten nicht aktiviert. Daher kann die vorhandene Datei nicht überschrieben werden und die Wiederherstellung schlägt fehl.

Der Benutzer, der die Wiederherstellung auf dem Remote-Server ausführt, hat offensichtlich keinen Zugriff auf dieses Verzeichnis auf dem Remote-Server.

C:\program files\.... ist ein geschütztes Verzeichnis - normale Benutzer (Nicht-Administratoren) haben keinen Zugriff auf dieses Verzeichnis (und dessen Unterverzeichnisse) .

Einfachste Lösung: Platzieren Sie Ihre BAK-Datei an einer anderen Stelle (z. B. C:\temp) und stellen Sie sie von dort wieder her

30
marc_s

Ich hatte das gleiche Problem. Es stellte sich heraus, dass meine SQL Server- und SQL Server Agent-Dienste logon as unter dem Network Services-Konto ausgeführt wurden, das keinen Schreibzugriff für die Wiederherstellung der Sicherung hatte.

Ich habe diese beiden Dienste so geändert, dass sie sich als Local System Account anmelden, und das Problem wurde behoben.

23
Flea

Vor kurzem bin ich mit SQL 2008 R2 auf dieses Problem gestoßen und die folgende Lösung hat für mich funktioniert:

1) Erstellen Sie eine neue Datenbank mit demselben Namen wie der, die Sie wiederherstellen möchten 2) Verwenden Sie bei der Wiederherstellung denselben Namen, den Sie zuvor verwendet haben, und klicken Sie in den Optionen auf die Option zum Überschreiben 

Sie können dem oben genannten einen Versuch geben, wenn die anderen Lösungen nicht funktionieren. 

9
Devin

Der Ersteller des Backups hatte MSSql Version 10 installiert. Wenn er das Backup erstellt hat, speichert er auch den ursprünglichen Dateipfad (um ihn an demselben Speicherort wiederherstellen zu können). Ich hatte jedoch Version 11, sodass das Zielverzeichnis nicht gefunden wurde.

Also änderte ich das Ausgabedateiverzeichnis in C:\Programme\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\und konnte die Datenbank erfolgreich wiederherstellen.

Quelle

6
Philluminati

Ich hatte ein ähnliches Problem. Ich habe versucht, eine 2005.bak-Datei wiederherzustellen, und ich habe genau den gleichen Fehler erhalten. Ich habe auch die Überschreibungsoption gewählt, ohne Erfolg.

meine Lösung bestand darin, dem SQL-Benutzer Zugriff auf das betreffende Verzeichnis zu gewähren, indem Sie in den Ordner gehen und die Zugriffsrechte über den Eigenschaftenbildschirm bearbeiten. 

6
martijn

verlor auch ein paar Stunden für dieses Problem. habe es zwar geschafft: 

"Zugriff verweigert" bedeutete in meinem Fall wirklich "Zugriff verweigert". Das Benutzerkonto von mssqlstudio auf meinem Windows-Gerät hatte NICHT die volle Kontrolle über den in der Fehlermeldung angegebenen Ordner. Ich gab ihm die volle Kontrolle. Der Zugriff wurde nicht mehr verweigert und die Wiederherstellung war erfolgreich. 

warum wurde der Ordner für Studio gesperrt? Wer weiß ? Ich habe genug Fragen, mit denen ich mich beschäftigen kann, ohne zu versuchen, mehr zu beantworten.

2
abraham tio

Ich hatte dieses Problem, ich habe mich als Administrator angemeldet und das Problem behoben.

1
Rob Smith

Ein anderes Szenario könnte das Vorhandensein mehrerer Datenbankpfade sein. Notieren Sie sich zuerst den Pfad, in dem neue Datenbanken derzeit gespeichert werden. Wenn Sie also eine neue leere Datenbank erstellen und dann Tasks/Restore ausführen, stellen Sie sicher, dass der Pfad, den die Wiederherstellung verwendet, das Verzeichnis ist, in dem die leere Datenbank erstellt wurde. Selbst wenn der Wiederherstellungspfad zulässig ist, erhalten Sie immer noch Zugriff Fehler verweigert, wenn es nicht der aktuelle Pfad ist, mit dem Sie arbeiten. Sehr leicht zu erkennen, wenn der Pfad nicht legal ist, viel schwieriger zu erkennen, wenn der Pfad legal ist, aber nicht der aktuelle Pfad.

0
demongolem

Versuche dies:

Wechseln Sie im Assistenten zum Wiederherstellen von DBs zur Registerkarte Dateien, deaktivieren Sie das Kontrollkästchen "Alle Dateien in Ordner verschieben" und ändern Sie das Wiederherstellungsziel von C: auf ein anderes Laufwerk. Fahren Sie dann mit dem regulären Wiederherstellungsvorgang fort. Es wird erfolgreich wiederhergestellt.

0
Raja Sekhar

Ich hatte das gleiche Problem, aber ich habe SQL Server 2008 R2 verwendet. Sie müssen Optionen einchecken und die Pfade überprüfen, in denen SQL die Dateien .mdf und .ldf speichert. Ich habe mein Problem damit gelöst, ich hoffe es hilft Ihnen.

0
Edgar Castillo

Tut mir leid, ich kann es nicht kommentieren ...

Ich hatte das gleiche Problem. In meinem Fall lag das Problem im Zusammenhang mit dem Versuch, in einem alten SQL Server-Ordner (der auf dem Server vorhanden war) wiederherzustellen. Dies ist auf alte SQL Server-Sicherungen (d. H. SQL Server 2012-Sicherung) zurückzuführen, die auf einem neuen SQL Server (SQL Server 2014) wiederhergestellt wurden. Das eigentliche Problem unterscheidet sich nicht zu sehr von der Antwort von @marc_s. Jedenfalls habe ich nur den Zielordner in den neuen SQL Server DATA-Ordner geändert.

0
bubi

In meinem Fall musste ich den Sicherungspfad der Datenbank, von der aus ich die Wiederherstellung durchführte, überprüfen. Ich hatte es zuvor von einem anderen Pfad wiederhergestellt, als ich es das erste Mal tat. Ich habe den Sicherungspfad so festgelegt, dass er den Sicherungspfad verwendet, den ich zum ersten Mal verwendet habe, und es hat funktioniert!

0
SitecoreSyed

Ich habe so ein Problem. Fehler durch aktivierte Komprimierung in SQL Server-Ordnern verursacht.

0
Arman Hayots

Frnds ... Ich hatte das gleiche Problem, als ich die Datenbank umgestaltet hatte, und versuchte jede Lösung, konnte aber nicht gelöst werden. Dann habe ich versucht, SQL 2005 erneut zu installieren und das Problem gelöst. Letztes Mal habe ich vergessen, die Option zum Anpassen zu überprüfen, während SQL installiert ist.

0
Nishant

Dies ist möglicherweise nicht die beste Lösung, aber ich habe versucht, die Wiederherstellung bei SQL Server 2005 durchzuführen, aber ich habe zu SQL Server 2008 gewechselt und es hat funktioniert.

0
alansiqueira27