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

SQL Server 2008 無法附加資料庫 (錯誤 5123) 解決:服務帳號權限修正

     編輯:SQL Server 2008

錯誤完整訊息

標題: Microsoft SQL Server Management Studio
無法為該要求擷取資料。 (Microsoft.SqlServer.Management.Sdk.Sfc)
執行 Transact-SQL 陳述式或批次時發生例外狀況。 (Microsoft.SqlServer.ConnectionInfo)
嘗試開啟或建立實體檔案 'D:\db\OA.mdf' 時,CREATE FILE 遇到作業系統錯誤 5 (拒絕存取)。 (Microsoft SQL Server, 錯誤: 5123)

根因

SQL Server 服務啟動帳號 (預設 NT Service\MSSQLSERVER) 對資料庫檔案目錄 D:\db 無讀寫權限。

圖形介面修正步驟

  1. 開啟 SQL Server 組態管理員 (開始 → 所有程式 → Microsoft SQL Server 2008 → 組態工具)。
  2. 左側選 SQL Server 服務。
  3. 右鍵 SQL Server (MSSQLSERVER) → 內容。
  4. 切換 登入 索引標籤。
  5. 內建帳號選擇 Local System (或輸入具權限的網域/本地帳號)。
  6. 按 確定,對話框提示需重新啟動服務,按 是。
  7. 服務重啟後,在 SSMS 再次嘗試附加,應成功。

替代方案:資料夾 ACL 授權 (不變更服務帳號)

  1. 檔案總管 → D:\db 右鍵 → 內容 → 安全性 → 編輯 → 新增。
  2. 輸入 NT Service\MSSQLSERVER (具名執行個體為 NT Service\MSSQL$InstanceName),檢查名稱。
  3. 給予 完全控制,套用至子項目。
  4. SSMS 重新附加。

驗證腳本

SELECT servicename, service_account, startup_type_desc
FROM sys.dm_server_services
WHERE servicename LIKE 'SQL Server%';

注意事項

  • 使用 Local System 雖方便但權限過高,生產環境建議建立專用最小權限網域帳號。
  • 若檔案來自其他電腦,確認檔案未被標記「封鎖」 (右鍵內容 → 一般 → 解除封鎖)。
  • 防毒軟體即時掃描可能暫時鎖定檔案,附加前暫停掃描或加入排除。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved