Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Bijzonderheden
| Attribute | Waarde |
|---|---|
| Productnaam | SQL Server |
| Gebeurtenis-id | 5120 |
| Bron van gebeurtenis | MSSQLSERVER |
| Onderdeel | SQLEngine |
| Symbolische naam | DSK_FCB_FAILURE |
| Berichttekst | Tabelfout: kan het fysieke bestand '%.*ls' niet openen. Besturingssysteemfout %d: "%ls". |
Explanation
SQL Server kan geen databasebestand openen. De fout in het besturingssysteem in het bericht verwijst naar specifiekere onderliggende redenen voor de fout. Deze fout kan vaak samen met andere fouten worden weergegeven, zoals 17204 of 17207.
Gebruikersactie
Diagnosticeer en corrigeer de fout van het besturingssysteem en voer de bewerking vervolgens opnieuw uit. Er zijn meerdere statussen waarmee Microsoft het gebied in het product kan beperken waar het gebied zich voordoet.
De toegang wordt geweigerd
Als u de fout van het Access is Denied besturingssysteem = 5 krijgt, kunt u de volgende methoden overwegen:
Controleer de machtigingen die zijn ingesteld op het bestand door de eigenschappen van het bestand in Windows Verkenner te bekijken. SQL Server maakt gebruik van Windows-groepen om toegangsbeheer in te richten op de verschillende bestandsbronnen. Zorg ervoor dat de juiste groep [met namen zoals SQLServerMSSQLUser$ComputerName$MSSQLSERVER of SQLServerMSSQLUser$ComputerName$InstanceName] de vereiste machtigingen heeft voor het databasebestand dat wordt vermeld in het foutbericht. Raadpleeg Machtigingen voor bestandssysteem configureren voor Database Engine Access voor meer informatie. Zorg ervoor dat de Windows-groep daadwerkelijk het opstartaccount van de SQL Server-service of de service-SID bevat.
Controleer het gebruikersaccount waaronder de SQL Server-service momenteel wordt uitgevoerd. U kunt Windows Taakbeheer gebruiken om deze informatie op te halen. Zoek de waarde 'Gebruikersnaam' voor het uitvoerbare bestandsqlservr.exe'. Als u onlangs het SQL Server-serviceaccount hebt gewijzigd, weet u ook dat de ondersteunde manier om deze bewerking uit te voeren het hulpprogramma SQL Server Configuration Manager gebruikt.
Afhankelijk van het type bewerking (het openen van databases tijdens het opstarten van de server, het koppelen van een database, het herstellen van de database, enzovoort), kan het account dat wordt gebruikt voor imitatie en het openen van het databasebestand variëren. Raadpleeg het onderwerp Gegevens en logboekbestanden beveiligen om te begrijpen welke bewerking welke machtiging en welke accounts instelt. Gebruik een hulpprogramma zoals Windows SysInternals Process Monitor om te begrijpen of de bestandstoegang plaatsvindt in de beveiligingscontext van het opstartaccount van de SQL Server-exemplaarservice [of service-SID] of een geïmiteerd account.
Als SQL Server de gebruikersreferenties nabootst van de aanmelding die de bewerking ALTER DATABASE of CREATE DATABASE uitvoert, ziet u de volgende informatie in het hulpprogramma Procescontrole (een voorbeeld).
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
Bestanden bijvoegen die zich in een opslag met netwerkkoppeling bevinden
Als u een database die zich in de netwerkopslag bevindt, niet opnieuw kunt koppelen, kan een bericht zoals dit worden vastgelegd in het toepassingslogboek.
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.).
Dit probleem treedt op omdat SQL Server de bestandsmachtigingen opnieuw instelt wanneer de database is losgekoppeld. Wanneer u de database opnieuw probeert te koppelen, treedt er een fout op vanwege beperkte sharemachtigingen.
Voer de volgende stappen uit om het probleem op te lossen:
Gebruik de opstartoptie -T om SQL Server te starten. Gebruik deze opstartoptie om traceringsvlag 1802 in te schakelen in SQL Server Configuration Manager (zie Traceringsvlagken instellen met DBCC TRACEON voor informatie over 1802). Zie Opstartopties voor database-engineservice voor meer informatie over het wijzigen van de opstartparameters.
Gebruik de volgende opdracht om de database los te koppelen.
exec sp_detach_db DatabaseName goGebruik de volgende opdracht om de database opnieuw te koppelen.
exec sp_attach_db DatabaseName, '\\Network-attached storage_Path\DatabaseMDFFile.mdf', '\\Network-attached storage_Path\DatabaseLDFFile.ldf' go