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 eine Datenbankdatei nicht ö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.
Benutzeraktion
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 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. Achten Sie darauf, dass die Windows-Gruppe das SQL Server-Dienststartkonto oder die Dienst-SID tatsächlich enthält.
Überprüfen Sie das Benutzerkonto, unter dem der SQL Server-Dienst aktuell 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 vor Kurzem das SQL Server-Dienstkonto geändert haben, berücksichtigen Sie außerdem, dass bei der unterstützten Durchführung dieses Vorgangs das SQL Server-Konfigurations-Manager-Hilfsprogramm verwendet wird.
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 Sicherheitskontext des Dienststartkontos der SQL Server-Instanz [oder Dienst-SID] oder einem Konto mit Identitätswechsel erfolgt.
Wenn SQL Server die Benutzeranmeldeinformationen der Anmeldung, mit der der ALTER DATABASE- oder CREATE DATABASE-Vorgang ausgeführt wird, durch Identitätswechsel darstellt, werden im Prozessmonitor-Tool beispielsweise die folgenden Informationen angezeigt:
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, weil 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 zum Starten von SQL Server die Startoption -T. 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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für