使用 SSMS 附加 .mdf 檔案時提示「Read-Only」,但檔案屬性中「唯讀」核取方塊未勾選。附加成功後資料庫名稱後顯示 (Read-Only),無法寫入資料。
原理:SQL 驗證模式下,服務帳號可能無檔案系統寫入權限;Windows 驗證使用當前使用者權限,通常具備完整存取權。

權限修正後,執行以下 T-SQL 移除資料庫層級唯讀狀態:
EXEC sp_dboption '資料庫名稱', 'read only', 'FALSE';
-- 或
ALTER DATABASE [資料庫名稱] SET READ_WRITE;
執行後重新整理物件總管,資料庫名稱後的 (Read-Only) 標記消失。
若上述無效:
1. SSMS 中刪除已附加的 Read-Only 資料庫
2. 確認檔案權限正確後重新附加
| 層面 | 原因 | 解決 |
|---|---|---|
| 檔案系統 | .mdf/.ldf 權限不足(服務帳號無寫入權) | 授權完全控制 |
| 資料庫引擎 | 偵測到檔案不可寫,自動標記 Read-Only | sp_dboption 移除標記 |
| 連線驗證 | SQL 驗證使用服務帳號,權限受限 | 改用 Windows 驗證附加 |
BACKUP/RESTORE 而非附加/分離,避免權限與相容性問題