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

SQL Server 2005 附加資料庫錯誤 5123 完整解決方案

     編輯:SQL Server 2005

錯誤訊息

無法為此要求擷取資料。(Microsoft.SqlServer.SmoEnum)
執行 Transact-SQL 陳述式或批次時發生例外狀況。(Microsoft.SqlServer.ConnectionInfo)
嘗試開啟或建立實體檔案 "d:\Data\***.mdf" 時,Create file 遇到作業系統錯誤 5 (拒絕存取。)

問題背景

  • 資料庫版本:SQL Server 2005 Enterprise
  • 作業系統:Windows Server 2003 Enterprise
  • 觸發情境:資料庫卸離後,將資料磁碟移至另一台相同配置的主機,附加時失敗

根本原因

檔案系統權限不足。SQL Server 服務帳戶無法存取 .mdf/.ldf 檔案。

標準解決步驟

  1. 右鍵資料庫檔案所在 資料夾 → 內容 → 安全性
  2. 點選 編輯 → 新增
  3. 輸入服務帳戶名稱,常見帳戶:
    Administrators、NETWORK SERVICE、SQLServerMSSQLUser$<機器名>$MSSQLSERVER、Everyone
    (若不確定服務帳戶,可直接加入 Everyone 測試)
  4. 勾選 完全控制 → 確定 套用

進階情況:資料夾權限未繼承至檔案

若資料夾已設定權限但仍報錯 5123,原因通常是 資料夾權限未自動繼承至子檔案。

解決方法:逐檔設定權限

  1. 對每個資料庫檔案(.mdf、.ldf、.ndf)分別右鍵 → 內容 → 安全性
  2. 同樣新增服務帳戶並授予 完全控制
  3. 確認每個檔案的「安全性」頁籤顯示該帳戶擁有完全控制權限

驗證步驟

  1. 重新嘗試附加資料庫
  2. 若成功,檢查 SQL Server 錯誤記錄確認無存取警告
  3. 執行 DBCC CHECKDB 驗證資料庫完整性

預防建議

  • 資料庫檔案目錄建立時,預先設定正確權限並啟用繼承
  • 跨主機移動資料庫檔案後,務必重新驗證目標主機權限
  • 使用專屬服務帳戶而非內建帳戶,便於權限管理與稽核
  • 部署自動化腳本檢查關鍵目錄與檔案權限
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved