Udostępnij za pomocą


MSSQLSERVER_5120

Dotyczy:SQL Server

Szczegóły

Attribute Wartość
Nazwa produktu SQL Server
Identyfikator zdarzenia 5120
Źródło zdarzenia MSSQLSERVER
Składnik SQLEngine
Nazwa symboliczna DSK_FCB_FAILURE
Tekst wiadomości Błąd tabeli: Nie można otworzyć pliku fizycznego "%.*ls". Błąd systemu operacyjnego %d: "%ls".

Explanation

Program SQL Server nie może otworzyć pliku bazy danych. Błąd systemu operacyjnego podany w komunikacie wskazuje bardziej szczegółowe przyczyny awarii. Ten błąd może być często wyświetlany wraz z innymi błędami, takimi jak 17204 lub 17207.

Akcja użytkownika

Zdiagnozuj i popraw błąd systemu operacyjnego, a następnie spróbuj ponownie wykonać operację. Istnieje wiele stanów, które mogą pomóc firmie Microsoft zawęzić obszar w produkcie, w którym występuje obszar.

Odmowa dostępu

Jeśli występuje Access is Denied błąd systemu operacyjnego = 5, rozważ następujące metody:

  • Sprawdź uprawnienia, które są ustawione w pliku, sprawdzając właściwości pliku w Eksploratorze Windows. Program SQL Server używa grup systemu Windows do aprowizowania kontroli dostępu w różnych zasobach plików. Upewnij się, że odpowiednia grupa [o nazwach takich jak SQLServerMSSQLUser$ComputerName$MSSQLSERVER lub SQLServerMSSQLUser$ComputerName$InstanceName] ma wymagane uprawnienia do pliku bazy danych wymienionego w komunikacie o błędzie. Aby uzyskać więcej informacji , zobacz Konfigurowanie uprawnień systemu plików na potrzeby dostępu do aparatu bazy danych . Upewnij się, że grupa systemu Windows rzeczywiście zawiera konto uruchamiania usługi SQL Server lub identyfikator SID usługi.

  • Przejrzyj konto użytkownika, na którym jest obecnie uruchomiona usługa PROGRAMU SQL Server. Aby uzyskać te informacje, możesz użyć Menedżera zadań systemu Windows. Wyszukaj wartość "Nazwa użytkownika" pliku wykonywalnego "sqlservr.exe". Jeśli niedawno zmieniono konto usługi programu SQL Server, pamiętaj, że obsługiwanym sposobem wykonania tej operacji jest użycie narzędzia SQL Server Configuration Manager .

  • W zależności od typu operacji (otwieranie baz danych podczas uruchamiania serwera, dołączanie bazy danych, przywracanie bazy danych itd.), konto używane do personifikacji i uzyskiwanie dostępu do pliku bazy danych może się różnić. Zapoznaj się z tematem Zabezpieczanie danych i plików dziennika , aby dowiedzieć się, które operacje ustawiają uprawnienia i jakie konta. Użyj narzędzia, takiego jak Windows SysInternals Process Monitor , aby dowiedzieć się, czy dostęp do plików odbywa się w kontekście zabezpieczeń konta uruchamiania usługi wystąpienia programu SQL Server [lub identyfikator SID usługi] lub personifikowanego konta.

    Jeśli program SQL Server personifikuje poświadczenia użytkownika logowania, które wykonuje operację ALTER DATABASE lub CREATE DATABASE, zauważysz następujące informacje w narzędziu Monitor przetwarzania (na przykład).

    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
    

Dołączanie plików znajdujących się w magazynie dołączonym do sieci

Jeśli nie możesz ponownie dołączyć bazy danych znajdującej się w magazynie dołączonym do sieci, w dzienniku aplikacji może zostać zarejestrowany komunikat podobny do tego.

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.).

Ten problem występuje, ponieważ program SQL Server resetuje uprawnienia do pliku, gdy baza danych jest odłączona. Podczas próby ponownego dołączenia bazy danych występuje błąd z powodu ograniczonych uprawnień udziału.

Aby rozwiązać ten problem, wykonaj następujące kroki:

  1. Użyj opcji uruchamiania -T, aby uruchomić program SQL Server. Użyj tej opcji uruchamiania, aby włączyć flagę śledzenia 1802 w programie SQL Server Configuration Manager (zobacz Ustawianie flag śledzenia za pomocą funkcji DBCC TRACEON , aby uzyskać informacje na temat 1802). Aby uzyskać więcej informacji na temat zmiany parametrów uruchamiania, zobacz Opcje uruchamiania usługi aparatu bazy danych.

  2. Użyj następującego polecenia, aby odłączyć bazę danych.

     exec sp_detach_db DatabaseName
     go 
    
  3. Użyj następującego polecenia, aby ponownie dołączyć bazę danych.

    exec sp_attach_db DatabaseName, '\\Network-attached storage_Path\DatabaseMDFFile.mdf', '\\Network-attached storage_Path\DatabaseLDFFile.ldf'
    go