在執行資料庫還原 (RESTORE DATABASE) 時,彈出錯誤:
無法打開備份裝置 'E:\自動備份\ufidau8xTmp\UFDATA.BAK'。裝置出現錯誤或裝置脫機。詳細資訊請參閱 SQL Server 錯誤日誌。 (錯誤碼 -2147217900)
系統建議檢查:磁碟空間、目錄是否存在、系統庫路徑與 MDF 檔案目錄一致性。
NT Service\MSSQLSERVER 或網域帳戶) 對備份檔案所在目錄 沒有讀取/寫入權限。services.msc),找到 SQL Server (MSSQLSERVER),查看「登入身分」欄位確認服務帳戶。E:\自動備份\ufidau8xTmp\) → 內容 → 安全性 → 編輯 → 新增。NT Service\MSSQLSERVER),點擊「檢查名稱」確認後確定。SQL Server 安裝時會建立預設備份目錄 (通常在 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup),服務帳戶預設擁有完全控制權限。
# 命令列複製 (需管理員權限) copy "E:\自動備份\ufidau8xTmp\UFDATA.BAK" "C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\"
然後在 SSMS 還原對話框中從「裝置」選擇此預設目錄下的檔案。
若權限無誤但提示「資料庫正在使用」,需先將資料庫設為單用戶模式並強制斷開連線:
USE master;
GO
-- 1. 斷開所有連線並回滾事務
ALTER DATABASE [目標資料庫名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 2. 執行還原 (REPLACE 覆蓋現有)
RESTORE DATABASE [目標資料庫名]
FROM DISK = N'C:\Backup\UFDATA.BAK'
WITH REPLACE,
MOVE 'UFDATA' TO 'D:\Data\UFDATA.mdf', -- 指定資料檔新路徑
MOVE 'UFDATA_log' TO 'D:\Log\UFDATA_log.ldf', -- 指定日誌檔新路徑
STATS = 5;
GO
-- 3. 還原完成後恢復多用戶模式
ALTER DATABASE [目標資料庫名] SET MULTI_USER;
GO
關鍵參數說明:
WITH REPLACE:允許覆蓋同名資料庫。MOVE:若還原路徑與原備份路徑不同,**必須** 明確指定 .mdf/.ldf 新路徑,否則會嘗試寫入原路徑導致失敗。STATS = 5:每 5% 顯示進度,便於監控大型資料庫還原。-- 透過 T-SQL 讀取最新錯誤日誌 EXEC sp_readerrorlog 0, 1, N'backup', N'error'; -- 或查看檔案:C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log\ERRORLOG
icacls 授權命令,確保服務帳戶永久擁有讀寫權。BACKUP TO URL (Azure Blob) 或網路共享 (需服務帳戶有網路權限) 實現異地容災。「無法打開備份裝置」90% 以上為 **SQL Server 服務帳戶權限不足**。優先檢查並授予備份目錄讀取權限,或將檔案移至服務帳戶可訪問的預設備份目錄。還原前務必用 ALTER DATABASE ... SET SINGLE_USER WITH ROLLBACK IMMEDIATE 處理活躍連線,並用 MOVE 子句明確指定檔案路徑,可避免 99% 的還原失敗。