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

SQL Server 2008 附加資料庫 5120 錯誤 (拒絕存取) 完整排查與解決

     編輯:SQL Server 2008

錯誤重現

無法開啟實體檔案 "D:\DB\OA.mdf"。作業系統錯誤 5 (拒絕存取)。 (Microsoft SQL Server, 錯誤: 5123)

核心原因

SQL Server 服務帳號 (預設 NT Service\MSSQLSERVER) 對資料庫檔案目錄缺乏 讀取/寫入權限。常見於:

  • 檔案從其他電腦複製而來,保留原 ACL。
  • 檔案放在非預設資料目錄 (如 D:\DB)。
  • 服務帳號變更後未同步權限。

標準解決步驟

  1. 開啟檔案總管,定位 .mdf、.ldf 所在資料夾。
  2. 右鍵 → 內容 → 安全性 → 編輯。
  3. 點擊 新增,輸入物件名稱:NT Service\MSSQLSERVER (具名執行個體為 NT Service\MSSQL$InstanceName),按 檢查名稱 解析。
  4. 授與 完全控制,確定套用至子資料夾與檔案。
  5. 在 SSMS 重新執行附加,應成功。

替代方案:變更服務帳號為具權限帳號

  1. 開啟 SQL Server 組態管理員 → SQL Server 服務。
  2. 右鍵目標執行個體 → 內容 → 登入。
  3. 選 這個帳號,輸入具備該資料夾權限的網域/本地帳號密碼。
  4. 重啟服務,再次附加。

快速驗證腳本

-- 檢查服務啟動帳號
SELECT servicename, service_account
FROM sys.dm_server_services
WHERE servicename LIKE 'SQL Server%';

若仍失敗,進階排查

  • 防毒軟體即時掃描鎖定檔案 → 加入排除清單。
  • 檔案屬性為「唯讀」 → 取消勾選。
  • 磁碟空間不足 → 清理空間。
  • 檔案已被其他 SQL 執行個體附加 → 先卸離。
  • 啟用 以系統管理員身分執行 SSMS 測試 (僅驗證檔案本身無損壞)。

預防措施

  • 建立資料庫時指定預設資料/記錄目錄 (已具備正確 ACL)。
  • 部署腳本中包含 icacls 設定權限步驟。
  • 定期稽核服務帳號權限與資料目錄 ACL 一致性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved