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:
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.
Gunakan perintah berikut untuk mencopot database.
exec sp_detach_db DatabaseName go
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk