用SQL語句還原數據庫時如果不指定數據庫文件的存儲路徑,則默認把數據文件和日志文件存放到與原數據庫相同的文件路徑中,這樣可能會產生錯誤,比如執行下面的語句:
restore database SmartDev_11_28 from disk='D:\Backup\SmartDev_20170904010000_413.bak'
得到如下的錯誤信息:
想要在語句中指定文件路徑需要用with move,
restore database 數據庫名
from disk='備份文件路徑'
with move '邏輯文件名' to '還原后數據庫數據文件存放路徑'
move '邏輯日志名' to '還原后數據庫日志文件存放路徑'
這里的邏輯文件名和邏輯日志名可以通過下面的語句來查看:
restore filelistonly from disk='D:\Backup\SmartDev_20170904010000_413.bak'
還原代碼如下:
restore database SmartDev_11_28 from disk='D:\Backup\SmartDev_20170904010000_413.bak' with recovery, move 'Intertek.Smart.Dev' to 'D:\DataBase\SZDBF8NBD2\SmartDev_11_28\SmartDev_11_28.mdf', move 'FileStreamGroup_4D837C1B' to 'D:\DataBase\SZDBF8NBD2\SmartDev_11_28\SmartDev_FileStreamGroup_4D837C1B.mdf', move 'Intertek.Smart.Dev_log' to 'D:\DataBase\SZDBF8NBD2\SmartDev_11_28\SmartDev_11_28.ldf', move 'filestream_data' to 'D:\DataBase\SZDBF8NBD2\SmartDev_11_28\filestream_data', move 'FileStream1' to 'D:\DataBase\SZDBF8NBD2\SmartDev_11_28\FileStream1'
還原數據庫成功。
還原后數據庫各文件存放在該目錄下。