Bagikan melalui


MSSQLSERVER_5120

Berlaku untuk: SQL Server

Detail

Atribut Nilai
Nama Produk SQL Server
ID Peristiwa 5120
Sumber Kejadian MSSQLSERVER
Komponen SQLEngine
Nama Simbolis DSK_FCB_FAILURE
Teks Pesan Kesalahan tabel: Tidak dapat membuka file fisik "%.*ls". Kesalahan sistem operasi %d: "%ls".

Penjelasan

SQL Server tidak dapat membuka file database. Kesalahan sistem operasi yang disediakan dalam pesan menunjuk ke alasan yang lebih spesifik yang mendasar untuk kegagalan tersebut. Anda mungkin biasanya melihat kesalahan ini bersama dengan kesalahan lain seperti 17204 atau 17207.

Tindakan pengguna

Diagnosis dan koreksi kesalahan sistem operasi, lalu coba lagi operasi. Ada beberapa status yang dapat membantu Microsoft mempersempit area dalam produk tempat area terjadi.

Akses ditolak

Jika Anda mendapatkan Access is Denied kesalahan sistem operasi = 5, pertimbangkan metode ini:

  • Periksa izin yang merupakan kumpulan file dengan melihat properti file di Windows Explorer. SQL Server menggunakan grup Windows untuk menyediakan Kontrol Akses pada berbagai sumber daya file. Pastikan grup yang sesuai [dengan nama seperti SQLServerMSSQLUser$ComputerName$MSSQLSERVER atau SQLServerMSSQLUser$ComputerName$InstanceName] memiliki izin yang diperlukan pada file database yang disebutkan dalam pesan kesalahan. Tinjau Mengonfigurasi Izin Sistem File untuk Akses Mesin Database untuk detail selengkapnya. Pastikan bahwa grup Windows benar-benar menyertakan akun startup layanan SQL Server atau SID layanan.

  • Tinjau akun pengguna tempat layanan SQL Server sedang berjalan. Anda bisa menggunakan Pengelola Tugas Windows untuk mendapatkan informasi ini. Cari nilai "Nama Pengguna" untuk "sqlservr.exe" yang dapat dieksekusi. Juga jika Anda baru-baru ini mengubah akun layanan SQL Server, ketahuilah bahwa cara yang didukung untuk melakukan operasi ini adalah dengan menggunakan utilitas Pengelola Konfigurasi SQL Server.

  • Bergantung pada jenis operasi (membuka database selama startup server, melampirkan database, pemulihan database, dan sebagainya), akun yang digunakan untuk peniruan identitas dan mengakses file database dapat bervariasi. Tinjau topik Mengamankan Data dan File Log untuk memahami operasi mana yang mengatur izin apa dan ke akun mana. Gunakan alat seperti Windows SysInternals Process Monitor untuk memahami apakah akses file terjadi di bawah konteks keamanan akun startup layanan instans SQL Server [atau Service SID] atau akun yang ditiru.

    Jika SQL Server meniru kredensial pengguna dari login yang menjalankan operasi ALTER DATABASE atau CREATE DATABASE, Anda akan melihat informasi berikut di alat Monitor Proses (contoh).

    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
    

Melampirkan file yang berada di penyimpanan yang terpasang pada jaringan

Jika Anda tidak dapat melampirkan ulang database yang berada di penyimpanan terlampir jaringan, pesan seperti ini mungkin dicatat di log Aplikasi.

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

Masalah ini terjadi karena SQL Server mengatur ulang izin file ketika database dilepas. Ketika Anda mencoba untuk memasang kembali database, kegagalan terjadi karena izin berbagi terbatas.

Untuk mengatasinya, ikuti langkah-langkah berikut:

  1. Gunakan opsi startup -T untuk memulai SQL Server. Gunakan opsi startup ini untuk mengaktifkan bendera pelacakan 1802 di Pengelola Konfigurasi SQL Server (lihat Lacak Bendera untuk informasi tentang 1802). Untuk informasi selengkapnya tentang cara mengubah parameter startup, lihat Opsi Startup Layanan Mesin Database.

  2. Gunakan perintah berikut untuk mencopot database.

     exec sp_detach_db DatabaseName
     go 
    
  3. Gunakan perintah berikut untuk memasang kembali database.

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