想把'd:\AdventureWorks2008R2-Full Database Backup.bak'还原到‘D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA’
结果出现‘Sql Server 逻辑文件 '' 不是数据库 '' 的一部分。请使用 RESTORE FILELISTONLY 来列出逻辑文件名。’
用restore filelistonly from disk='d:\AdventureWorks2008R2-Full Database Backup.bak'
显示结果如下
再运行 RESTORE DATABASE AdventureWorks2008R2
FROM disk='d:\AdventureWorks2008R2-Full Database Backup.bak'
WITH NORECOVERY,
MOVE 'AdventureWorks2008R2_Data' TO
'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\NewAdvWorks2008R2.mdf',
MOVE 'AdventureWorks2008R2_Log'
TO 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\NewAdvWorks2008R2.ldf'
RESTORE LOG AdventureWorks2008R2
FROM disk='d:\AdventureWorks2008R2-Full Database Backup.bak'
WITH RECOVERY
想把原来在安装 在C盘的数据库,还原到D盘下;
结果显示数据库 "AdventureWorks2008R2" 不存在。RESTORE 只能在还原主文件的完整备份或文件备份时创建数据库。
立马检查数据库路径。结果我发现我的实例名被我改过了。 比默认的实例名多了一个P,
于是改为如下
RESTORE DATABASE AdventureWorks2008R2
FROM disk='d:\AdventureWorks2008R2-Full Database Backup.bak'
WITH NORECOVERY,
MOVE 'AdventureWorks2008R2_Data' ---用restore filelistonly from disk='d:\AdventureWorks2008R2-Full Database ---Backup.bak'查得
TO
'd:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVERP\MSSQL\Data\AdvWorks2008R2.mdf',
MOVE 'AdventureWorks2008R2_Log' ---方法同上
TO 'd:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVERP\MSSQL\Data\AdvWorks2008R2.ldf'
RESTORE LOG AdventureWorks2008R2
FROM disk='d:\AdventureWorks2008R2-Full Database Backup.bak'
WITH RECOVERY
总结: 如果还原数据时,存放数据库的目录跟保存时不一致时要用到
restore filelistonly from disk='XXXXX.bak' 查看原数据库的路径信息和逻辑名
然后用
RESTORE DATABASE 数据库逻辑名
FROM disk='备份源的文件.bak'
WITH NORECOVERY,
MOVE 数据库数据文件逻辑名 TO 目标路径及文件名,文件名可以不同,文件名不同时表示还原时同时改了文件名
MOVE '数据库日志文件逻辑名'
TO 目标路径及文件名,文件名可以不同,文件名不同时表示还原时同时改了文件名
RESTORE LOG 数据库逻辑名 --还原日志文件
FROM disk=''备份源的文件.bak'
WITH RECOVERY