首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 附加 .mdf 文件提示「拒絕訪問」錯誤 5120 的解決方案

     編輯:關於SqlServer

錯誤現象

執行 CREATE DATABASE ... FOR ATTACH 或 SSMS 圖形界面附加數據庫時,報錯:

無法打開物理文件 "D:\Data\MyDB.mdf",作業系統錯誤 5:"5(拒絕訪問)"。錯誤:5120。

根因分析

SQL Server 服務啟動帳戶(通常是 NT Service\MSSQLSERVER 或自定義域帳戶)對 .mdf/.ldf 文件所在目錄缺乏 NTFS 讀寫權限。

解決步驟(圖形界面)

  1. 資源管理器 → 右鍵存放數據文件的文件夾 → 屬性 → 安全性 標籤。
  2. 點擊 編輯 → 添加 → 輸入 Everyone(或服務帳戶) → 確定。
  3. 勾選 完全控制(或至少 讀取+寫入+修改) → 確定套用。
  4. 重新附加數據庫,成功。

解決步驟(PowerShell 一鍵)

$folder = "D:\Data"
$acl = Get-Acl $folder
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "Everyone", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl $folder $acl

最佳實踐建議

  • 生產環境不要用 Everyone,建立專用服務帳戶(如 DOMAIN\SQLSvc)並授予最小權限(讀寫、列出資料夾)。
  • 數據/日志文件分盤存放時,每個文件夾都要授權。
  • 使用 sp_helpfile 或 sys.master_files 確認文件路徑後,再批量設權限。
  • 附加前先 DBCC CHECKDB 離線檢查,排除文件本身損壞。

相關錯誤碼速查

錯誤碼含義常見原因
5120無法打開物理文件NTFS 權限不足、路徑錯誤、文件被佔用
5123CREATE FILE 遇到 OS 錯誤路徑不存在、磁盤滿、權限
1813無法打開新數據庫附加失敗的通用封裝錯誤
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved