MSSQLSERVER_5120
Gilt für: SQL Server
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 5120 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | DSK_FCB_FAILURE |
Meldungstext | Tabellenfehler: Die physische Datei "%.*ls" kann nicht geöffnet werden. Betriebssystemfehler %d: '%ls'. |
Erklärung
SQL Server konnte keine Datenbankdatei öffnen. Der in der Meldung angegebene Betriebssystemfehler verweist auf die zugrunde liegenden spezifischeren Ursachen des Fehlers. Dieser Fehler tritt häufig in Kombination mit anderen Fehlern wie 17204 oder 17207 auf.
Aktion des Benutzers
Diagnostizieren und korrigieren Sie den Betriebssystemfehler, und wiederholen Sie dann den Vorgang. Es gibt mehrere Zustände, die Microsoft dabei helfen können, den Bereich im Produkt einzugrenzen, in dem der Fehler auftritt.
Zugriff verweigert
Wenn Sie den Access is Denied
-Betriebssystemfehler „5“ empfangen, ziehen Sie diese Methoden in Erwägung:
Überprüfen Sie die für die Datei festgelegten Berechtigungen, indem Sie die Eigenschaften der Datei im Windows-Explorer untersuchen. SQL Server verwendet Windows-Gruppen, um die Zugriffssteuerung für die verschiedenen Dateiressourcen bereitzustellen. Vergewissern Sie sich, dass die entsprechende Gruppe [mit Namen wie SQLServerMSSQLUser$ComputerName$MSSQLSERVER oder SQLServerMSSQLUser$ComputerName$InstanceName] über die erforderlichen Berechtigungen für die Datenbankdatei verfügt, die in der Fehlermeldung genannt wird. Weitere Informationen finden Sie unter Konfigurieren von Dateisystemberechtigungen für den Datenbank-Engine-Zugriff. Stellen Sie sicher, dass die Windows-Gruppe tatsächlich das Startkonto des SQL Server-Diensts oder die Dienst-SID enthält.
Überprüfen Sie das Benutzerkonto, unter dem der SQL Server-Dienst derzeit ausgeführt wird. Sie können diese Informationen mithilfe des Windows Task-Managers abrufen. Suchen Sie nach dem Wert für „Benutzername“ der „sqlservr.exe“-Programmdatei. Wenn Sie das SQL Server-Dienstkonto kürzlich geändert haben, wissen Sie außerdem, dass die unterstützte Methode für diesen Vorgang die Verwendung des hilfsprogramms SQL Server-Konfigurations-Manager ist.
Das Konto, das für den Identitätswechsel und den Zugriff auf die Datenbankdatei verwendet wird, kann je nach Typ des Vorgangs (Öffnen von Datenbanken während des Serverstarts, Anfügen einer Datenbank, Datenbankwiederherstellung usw.) variieren. Arbeiten Sie das Thema Sichern von Daten- und Protokolldateien durch, um zu verstehen, welcher Vorgang welche Berechtigungen für welche Konten festlegt. Verwenden Sie ein Tool wie den Prozessmonitor von Windows SysInternals, um zu verstehen, ob der Dateizugriff unter dem Sicherheitkontext des Dienststartkontos der SQL Server-Instanz [oder Dienst-SID] oder einem Konto mit Identitätswechsel erfolgt.
Wenn SQL Server die Identität des Benutzerkontos annimmt, mit dem der ALTER DATABASE- oder CREATE DATABASE-Vorgang ausgeführt wird, finden Sie im Tool „Prozessmonitor“ die folgenden Informationen (Beispiel).
Date & Time: 3/27/2010 8:26:08 PM Event Class: File System Operation: CreateFile Result: ACCESS DENIED Path: C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\DATA\attach_test.mdf TID: 4288 Duration: 0.0000366 Desired Access:Generic Read/Write Disposition: Open Options: Synchronous IO Non-Alert, Non-Directory File, Open No Recall Attributes: N ShareMode: Read AllocationSize: n/a Impersonating: DomainName\UserName
Anfügen von Dateien, die sich in einem Network Attached Storage (NAS) befinden
Wenn Sie eine Datenbank, die sich in einem NAS befindet, nicht erneut anfügen können, wird möglicherweise eine Meldung wie die folgende im Anwendungsprotokoll protokolliert:
Msg 5120, Level 16, State 101, Line 1 Unable to open the physical file "\\servername\sharename\filename.mdf". Operating system error 5: (Access is denied.).
Dieses Problem tritt auf, da SQL Server die Dateiberechtigungen zurücksetzt, wenn die Datenbank getrennt wird. Beim Versuch, die Datenbank erneut anzufügen, tritt aufgrund von eingeschränkten Freigabeberechtigungen ein Fehler auf.
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
Verwenden Sie die Startoption -T, um SQL Server zu starten. Verwenden Sie diese Startoption, um im SQL Server-Konfigurations-Manager das Ablaufverfolgungsflag 1802 zu aktivieren (Informationen zu 1802 finden Sie unter Ablaufverfolgungsflags). Weitere Informationen zum Ändern der Startparameter finden Sie unter Startoptionen für den Datenbank-Engine-Dienst.
Verwenden Sie zum Trennen der Datenbank den folgenden Befehl:
exec sp_detach_db DatabaseName go
Verwenden Sie den folgenden Befehl, um die Datenbank erneut anzufügen.
exec sp_attach_db DatabaseName, '\\Network-attached storage_Path\DatabaseMDFFile.mdf', '\\Network-attached storage_Path\DatabaseLDFFile.ldf' go