Ich habe eine Datenbank auf meinem lokalen Computer erstellt und dann eine Sicherung namens tables.bak
table erstelltDataLabTables
.
Ich habe diese Sicherung auf einen Remotecomputer ohne diese Tabelle verschoben und versucht, eine Wiederherstellung durchzuführen, erhalte jedoch den folgenden Fehler:
System.Data.SqlClient.SqlError: Das Betriebssystem hat beim Versuch 'RestoreContainer :: ValidateTargetForCreation' unter 'c: \ Programme \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables' den Fehler '5 (Zugriff verweigert.)' Zurückgegeben .mdf '.
Wie behebe ich meine Rechte, wenn dies das Problem ist?
Aus der Fehlermeldung geht hervor, dass beim Überprüfen des Ziels (
c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf
) Ihres Wiederherstellungsvorgangs ein Fehler aufgetreten ist .Das hört sich an, wie:
a) Diese Datei ist bereits vorhanden (da Sie sie bereits zuvor wiederhergestellt haben) und wird von SQL Server verwendet
oder
b) Dieses 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. Diese Sicherungen sind immer die gesamte Datenbank (oder mindestens eine oder mehrere Dateigruppen aus dieser Datenbank).
Meine Vermutung ist: Sie haben diese Datenbank bereits zuvor wiederhergestellt, und jetzt haben Sie bei einer zweiten Wiederherstellung 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 Ihrem Remoteserver ausführt, hat offensichtlich keinen Zugriff auf dieses Verzeichnis auf dem Remoteserver.C:\program files\....
ist ein geschütztes Verzeichnis - normale Benutzer (ohne Administratorrechte) haben keinen Zugriff auf dieses Verzeichnis (und seine Unterverzeichnisse).Einfachste Lösung: Versuchen Sie, Ihre BAK-Datei an einem anderen Ort abzulegen (z. B.C:\temp
) und stellen Sie sie von dort aus wieder herquelle
RESTORE
fehlschlägt, wenn die Datei vorhanden ist, auch wenn sie nicht von SQL Server verwendet wird (z. B. MDF / LDF-Dateien bleiben nach einem vorherigen Trennen an Ort und Stelle. Dies ist mir in einer benutzerdefinierten T-SQL-basierten Protokollversand-Implementierung für eine umfassende Migration von Hunderten von DBs in den letzten Wochen begegnet. Ich bin nicht sicher, ob die Fehlermeldung "Zugriff verweigert" war, möglicherweise etwas weniger Spezifisches.Ich hatte das gleiche Problem. Es stellte sich heraus, dass meine
SQL Server
undSQL Server Agent
Dienstelogon as
unter dem liefenNetwork Services
Konto ausgeführt wurden, das keinen Schreibzugriff hatte, um die Wiederherstellung der Sicherung durchzuführen.Ich habe beide Dienste geändert, um mich als anzumelden,
Local System Account
und dies hat das Problem behoben.quelle
Vor kurzem hatte ich dieses Problem mit SQL 2008 R2 und die folgende Lösung hat für mich funktioniert:
1) Erstellen Sie eine neue Datenbank mit demselben Namen wie die, die Sie wiederherstellen möchten. 2) Verwenden Sie beim Wiederherstellen denselben Namen wie oben und klicken Sie in den Optionen auf die Option zum Überschreiben
Sie können das oben Genannte ausprobieren, wenn die anderen Lösungen nicht funktionieren.
quelle
Quelle
quelle
Ich hatte ein ähnliches Problem. Ich habe versucht, eine .bak-Datei von 2005 wiederherzustellen, und genau den gleichen Fehler erhalten. Ich habe die Option zum Überschreiben ebenfalls ohne Erfolg ausgewählt.
Meine Lösung bestand darin, dem SQL-Benutzer Zugriff auf das betreffende Verzeichnis zu gewähren, indem er zum Ordner ging und die Zugriffsrechte über den Eigenschaftenbildschirm bearbeitete.
quelle
verlor auch ein paar Stunden durch dieses Problem. habe es aber in Gang gebracht:
"Zugriff verweigert" bedeutete in meinem Fall wirklich "Zugriff verweigert". Das Benutzerkonto von mssqlstudio auf meinem Windows-Gerät hatte NICHT die vollständige Kontrolle über den in der Fehlermeldung angegebenen Ordner. Ich gab es die volle Kontrolle. Der Zugriff wurde nicht mehr verweigert und die Wiederherstellung war erfolgreich.
Warum wurde der Ordner für das Studio gesperrt? Wer weiß ? Ich habe genug Fragen, um sie zu beantworten, ohne zu versuchen, mehr zu beantworten.
quelle
Ich hatte dieses Problem, habe mich als Administrator angemeldet und das Problem wurde behoben.
quelle
Ein anderes Szenario könnte das Vorhandensein mehrerer Datenbankpfade sein. Notieren Sie sich zunächst den Pfad, in dem derzeit neue Datenbanken gespeichert werden. Wenn Sie also eine neue leere Datenbank erstellen und dies dann tun
Tasks/Restore
, stellen Sie sicher, dass der Pfad, den die Wiederherstellung verwenden möchte , dasselbe Verzeichnis ist, in dem die leere Datenbank erstellt wurde. Auch wenn der Wiederherstellungspfad zulässig ist, wird Ihnen der Zugriff verweigert Fehler, 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.quelle
Entschuldigung, da ich keinen Kommentar abgeben kann ...
Ich hatte das gleiche Problem. In meinem Fall hing das Problem mit dem Versuch zusammen, in einem alten SQL Server-Ordner (der auf dem Server vorhanden war) wiederherzustellen. Dies ist auf eine alte SQL Server-Sicherung (dh SQL Server 2012-Sicherung) zurückzuführen, die auf einem neuen SQL Server (SQL Server 2014) wiederhergestellt wurde. Das eigentliche Problem unterscheidet sich nicht allzu sehr von der Antwort von @marc_s. Wie auch immer, ich habe nur den Zielordner in den neuen SQL Server DATA-Ordner geändert.
quelle
Dies ist möglicherweise nicht die beste Lösung, aber ich habe versucht, die Wiederherstellung unter SQL Server 2005 durchzuführen, aber ich habe zu SQL Server 2008 gewechselt und es hat funktioniert.
quelle
Habe so ein Problem. Fehler durch aktivierte Komprimierung in SQL Server-Ordnern.
quelle
Frnds ... Ich hatte das gleiche Problem beim Wiederherstellen der Datenbank und habe jede Lösung ausprobiert, konnte aber nicht gelöst werden. Dann habe ich versucht, SQL 2005 neu zu installieren und das Problem gelöst. Eigentlich habe ich das letzte Mal vergessen, die Option zum Anpassen zu aktivieren, während ich SQL installiert habe. Es kommt zweimal während der Installation und ich habe es nur für diejenigen überprüft.
quelle
In meinem Fall musste ich den Sicherungspfad der Datenbank, von der aus ich wiederhergestellt habe, ü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!
quelle
Am Ende habe ich neue Ordner für Daten und Protokolle erstellt und es hat ordnungsgemäß funktioniert. Es muss ein Problem mit der Ordner- / Dateiberechtigung gewesen sein.
quelle
Dies geschieht auch, wenn die Pfade korrekt sind, das Dienstkonto jedoch nicht der Eigentümer der Datendateien ist (es verfügt jedoch weiterhin über ausreichende Rechte für den Lese- / Schreibzugriff). Dies kann auftreten, wenn die Berechtigungen für die Dateien zurückgesetzt wurden, um mit den Berechtigungen des Ordners übereinzustimmen (natürlich, während der Dienst gestoppt wurde).
In diesem Fall ist es am einfachsten, jede Datenbank zu trennen und erneut anzuhängen (da beim Anhängen der Eigentümer in das Dienstkonto geändert wird).
quelle
Versuche dies:
Wechseln Sie im Fenster des Assistenten zum Wiederherstellen der Datenbank 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 Wiederherstellungsprozess fort. Es wird erfolgreich wiederhergestellt.
quelle
Ich hatte das gleiche Problem, aber ich habe SQL Server 2008 R2 verwendet. Sie müssen die Optionen einchecken und die Pfade überprüfen, in denen SQL die Dateien .mdf und .ldf speichern wird. Sie müssen den Pfad Ihrer SQL Server-Installation auswählen. Ich habe mein Problem damit gelöst, ich hoffe es hilft dir.
quelle
Versuchen Sie dann, es in einen Unterordner unter C: zu verschieben, stellen Sie jedoch sicher, dass der Benutzer die vollen Rechte für den von Ihnen verwendeten Ordner hat.
quelle