Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Detaljer
| Attribute | Värde |
|---|---|
| Produktnamn | SQL Server |
| Händelse-ID | 5120 |
| Händelsekälla | MSSQLSERVER |
| Komponent | SQLEngine |
| Symboliskt namn | DSK_FCB_FAILURE |
| Meddelandetext | Tabellfel: Det går inte att öppna den fysiska filen "%.*ls". Operativsystemfel %d: "%ls". |
Explanation
SQL Server kunde inte öppna en databasfil. Operativsystemfelet i meddelandet pekar på mer specifika underliggande orsaker till felet. Du kan ofta se det här felet tillsammans med andra fel som 17204 eller 17207.
Användaråtgärd
Diagnostisera och korrigera operativsystemets fel och försök sedan utföra åtgärden igen. Det finns flera tillstånd som kan hjälpa Microsoft att begränsa området i produkten där området förekommer.
Åtkomst nekas
Om du får Access is Denied operativsystemets fel = 5 bör du överväga följande metoder:
Kontrollera vilka behörigheter som är inställda på filen genom att titta på egenskaperna för filen i Utforskaren. SQL Server använder Windows-grupper för att etablera åtkomstkontroll på de olika filresurserna. Kontrollera att lämplig grupp [med namn som SQLServerMSSQLUser$ComputerName$MSSQLSERVER eller SQLServerMSSQLUser$ComputerName$InstanceName] har de behörigheter som krävs för databasfilen som nämns i felmeddelandet. Mer information finns i Konfigurera filsystembehörigheter för databasmotoråtkomst . Kontrollera att Windows-gruppen faktiskt innehåller SQL Server-tjänstens startkonto eller tjänst-SID.
Granska det användarkonto under vilket SQL Server-tjänsten körs. Du kan använda Aktivitetshanteraren för Windows för att hämta den här informationen. Leta efter värdet "Användarnamn" för den körbara filen "sqlservr.exe". Om du nyligen har ändrat SQL Server-tjänstkontot vet du också att det sätt som stöds för att utföra den här åtgärden är att använda SQL Server Configuration Manager-verktyget .
Beroende på typen av åtgärd (öppna databaser under serverstarten, koppla en databas, återställa databasen och så vidare) kan det konto som används för personifiering och åtkomst till databasfilen variera. Läs avsnittet Skydda data och loggfiler för att förstå vilken åtgärd som anger vilken behörighet och till vilka konton. Använd ett verktyg som Windows SysInternals Process Monitor för att förstå om filåtkomsten sker i säkerhetskontexten för START-kontot för SQL Server-instanstjänsten [eller Tjänst-SID] eller ett personifierat konto.
Om SQL Server personifierar användarautentiseringsuppgifterna för inloggningen som kör åtgärden ALTER DATABASE eller CREATE DATABASE ser du följande information i verktyget Processövervakare (ett exempel).
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
Koppla filer som finns på en nätverksansluten lagring
Om du inte kan återansluta en databas som finns på nätverksansluten lagring kan ett meddelande som detta loggas i programloggen.
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.).
Det här problemet beror på att SQL Server återställer filbehörigheterna när databasen kopplas från. När du försöker koppla databasen igen uppstår ett fel på grund av begränsade resursbehörigheter.
Lös problemet genom att följa dessa steg:
Använd startalternativet -T för att starta SQL Server. Använd det här startalternativet för att aktivera spårningsflagga 1802 i SQL Server Configuration Manager (se Ange spårningsflaggor med DBCC TRACEON för information om 1802). Mer information om hur du ändrar startparametrarna finns i Startalternativ för databasmotortjänsten.
Använd följande kommando för att koppla från databasen.
exec sp_detach_db DatabaseName goAnvänd följande kommando för att koppla databasen igen.
exec sp_attach_db DatabaseName, '\\Network-attached storage_Path\DatabaseMDFFile.mdf', '\\Network-attached storage_Path\DatabaseLDFFile.ldf' go