Ich fange an, SQL zu lernen, und ich habe ein Buch, das eine Datenbank enthält, an der ich arbeiten kann. Diese Dateien befinden sich im Verzeichnis, aber das Problem ist, dass beim Ausführen der Abfrage der folgende Fehler auftritt:
Meldung 5120, Ebene 16, Status 101, Zeile 1 Die physische Datei "C: \ Murach \ SQL Server 2008 \ Databases \ AP.mdf" kann nicht geöffnet werden. Betriebssystemfehler 5: "5 (Zugriff verweigert.)".
CREATE DATABASE AP
ON PRIMARY (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP.mdf')
LOG ON (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP_log.ldf')
FOR ATTACH
GO
In dem Buch sagt der Autor, dass es funktionieren sollte, aber es funktioniert in meinem Fall nicht. Ich habe gesucht, aber ich weiß nicht genau, wo das Problem liegt, also habe ich diese Frage gestellt.
sql
sql-server
dijai jijfs
quelle
quelle
Antworten:
Das SQL Server-Datenbankmodul-Dienstkonto muss über Berechtigungen zum Lesen / Schreiben im neuen Ordner verfügen.
Überprüfen Sie dies
quelle
Administrators Group
MSSQL$SQLEXPRESS
), ist es möglicherweise nicht offensichtlich, dass Sie das Konto zur Ordnerberechtigungsliste hinzufügen müssen als:NT Service\MSSQL$SQLEXPRESS
Ein alter Beitrag, aber hier ist eine schrittweise Anleitung, die für SQL Server 2014 unter Windows 7 funktioniert hat:
Voilá!
Ich denke, das Einstellen des Anmeldekontos war möglicherweise eine Option in der Installation, aber wenn ja, war dies nicht die Standardeinstellung und war leicht zu übersehen, wenn Sie dieses Problem nicht bereits kannten.
quelle
Um das Problem mit der Zugriffsverweigerung zu umgehen, habe ich SSMS als Administrator gestartet und konnte so eine Datenbank von meinem lokalen Laufwerk aus anhängen. Die Datenbank wurde in einer anderen SQL- und Windows-Instanz erstellt.
quelle
Dies ist ein Windows-Problem, bei dem SQL Server nicht über die entsprechende Berechtigung für den Ordner verfügt, der die .bak-Datei enthält, und daher dieser Fehler.
Am einfachsten ist es, Ihre .bak-Datei an den Standardspeicherort für SQL-Sicherungen zu kopieren, der über alle erforderlichen Berechtigungen verfügt. Sie müssen mit nichts anderem herumspielen. In SQL Server 2012 ist dieser Speicherort
quelle
Ich hatte dieses Problem. Führen Sie einfach SQL Server als Administrator aus
quelle
Ja, es ist richtig. Wenn Sie zuerst Ihr Dienstkonto von sqlserver herausfinden sollten, können Sie es im Task-Manager sehen, wenn Sie gleichzeitig Strg + Alt + Löschen drücken. Dann müssen Sie das Lese- / Schreibrecht von "C" erteilen : \ Murach \ SQL Server 2008 \ Databases "an das Dienstkonto.
quelle
Das Problem ist auf fehlende Berechtigungen für SQL Server zum Zugriff auf die MDF- und LDF-Dateien zurückzuführen. Alle diese Verfahren funktionieren:
quelle
Ich löse dieses Problem, indem ich
Full control
Berechtigungen für beide.mdf
und.ldf
Dateien fürUsers
Gruppen hinzufüge .quelle
Für mich wurde es folgendermaßen gelöst: SQL Server Management Studio - Als Administrator anmelden (Ich habe mich als Windows-Authentifizierung angemeldet) - Die MDF-Datei anhängen (Rechtsklick auf Datenbank | Anhängen | Hinzufügen) - Als Administrator abmelden - Als anmelden normaler Benutzer
quelle
Die tatsächlichen Serverberechtigungen spielen an dieser Stelle keine Rolle. alles sieht ok aus SQL Server selbst benötigt Ordnerberechtigungen.
Abhängig von Ihrer Version können Sie SERVERNAME $ MSSQLSERVER-Berechtigungen hinzufügen, um Ihren Ordner zu berühren. Andernfalls muss es sich im Standardverzeichnis BACKUP befinden (entweder dort, wo Sie es installiert haben, oder standardmäßig in c: \ programfiles (x) \ MSSQL \ BACKUP).
quelle
Selbst wenn Sie die folgenden Schritte ausführen, KÖNNTEN Sie dieselbe Fehlermeldung erhalten.
Ich habe immer noch den Berechtigungsfehler erhalten, aber dann habe ich festgestellt, dass im Bildschirm Anhängen im unteren Bereich NOCH die LOG-Datei angezeigt wurde und die Fehlermeldung dieselbe blieb.
Hoffe das hilft jemandem, der das Gleiche getan hat.
quelle
Sehr einfache Lösung.
quelle
Ich habe das Entity Framework in meiner Anwendung verwendet und hatte dieses Problem. Ich habe alle Berechtigungen in Ordnern und Windows-Diensten festgelegt und arbeite nicht. Danach starte ich meine Anwendung als Administrator (Rechtsklick in die Exe-Datei und wähle "Als Administrator ausführen"). Das funktioniert fein.
quelle
Wenn Sie diesen Fehler für eine
.MDF
Datei imAPP_DATA
Ordner (oder wo immer Sie sie ablegen) für ein Visual Studio-Projekt erhalten, habe ich einfach die Berechtigungen aus dem vorhandenenDATA
Ordner hier kopiert (ich verwende SQL Express 2014 zur Unterstützung eine ältere App):(Hinweis: Ihr tatsächlicher Installationspfad kann variieren - insbesondere wenn Ihr Instanzname unterschiedlich ist.)
Doppelklicken Sie
DATA
zuerst als Administrator auf den Ordner, um sicherzustellen, dass Sie Zugriff haben. Öffnen Sie dann die Eigenschaften des Ordners und ahmen Sie diese für denAPP_DATA
Ordner nach. In meinem Fall war der vermisste BenutzerMSSQL$SQLEXPRESS2014
(weil ich die Instanz benannt habeSQLEXPRESS2014
- Ihre kann anders sein). Dies ist auch der Benutzername des SQL Server-Dienstes.quelle
Aus irgendeinem Grund hat es in meinem Fall nicht geholfen, alle richtigen Berechtigungen festzulegen. Ich hatte eine Datei
db.bak
, die ich aufgrund des5(Access is denied.)
Fehlers nicht wiederherstellen konnte . Die Datei wurde im selben Ordner wie mehrere andere Sicherungsdateien abgelegt, und alle Berechtigungen waren mit anderen Dateien identisch . Ich konnte alle anderen Dateien außer dieser wiederherstellendb.bak
Datei . Ich habe sogar versucht, das SQL Server-Dienstprotokoll für Benutzer zu ändern - immer noch das gleiche Ergebnis. Ich habe versucht, die Datei ohne Wirkung zu kopieren.Dann habe ich versucht, einfach eine identische Datei durch Ausführen zu erstellen
anstatt die Datei zu kopieren. Und voila es hat funktioniert!
db2.bak
erfolgreich wiederhergestellt.Ich vermute, dass einige andere Probleme beim Lesen der Sicherungsdatei fälschlicherweise wie
5(Access is denied.)
von MS SQL gemeldet werden.quelle
Unter Linux ging ich in einen
/var/opt/mssql/data/
Ordner und öffnete ein Terminal mitsudo
dann änderte ich meine * .mdf- und * .ldf-Dateiberechtigungen wie folgt, in denen Sie sie durchyourDB
Ihren Datenbankdateinamen ersetzen undmyUser
in den aktuell protokollierten Benutzernamen:Danach wurde es ohne Probleme wieder verbunden.
quelle
Dies bedeutet, dass der SSMS-Anmeldebenutzer keine Berechtigung für die MDF-Datei hat. So hat es bei mir funktioniert:
Ich hatte das SSMS geöffnet (Als Administrator ausführen) und mich als Administrator angemeldet. Klicken Sie mit der rechten Maustaste auf Anhängen, klicken Sie auf Hinzufügen, wählen Sie die MDF-Datei aus und klicken Sie auf OK. Getan.
quelle