第一种思路:
1、先还原bak文件,看到原数据库的名称。
2、新建上同查到的【同名】的数据库
3、再还原bak文件时,发现,原来ldf新生成的ldf与bak中的ldf文件名不一样。
4、改名吧,先【分离】数据库,再在文件夹中找到文件,进行改名。
5、再附加数据库时,提示找不到文件,没事,在【当前文件路径】中改一下文件名就可以附加了
6、再还原bak文件,提示OK了。
第二种思路:
因为是在另一台电脑对同名数据库做的备份,用常规方法还原,提示不是相同数据库,不让还原,在网上找到下面的方法解决了:
第一步:
1、右击系统数据库master,新建查询
执行以下SQL代码:
RESTORE DATABASE xxx
FROM DISK = 'E:\DB\xxx.bak' --bak文件路径
with replace,
MOVE 'xxx' TO 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\xxx.mdf', --mdf文件路径
MOVE 'xxx_log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\xxx.ldf' --ldf文件路径
注释:xxx是你需要还原的数据库名称,xxx.bak是你需要还原的备份文件。
2、上面方法执行成功后,只有部分的表结构已经还原,而且表中没有数据,这时就可以用系统默认的方法再用xxx.bak文件还原一次数据库就大功告成了,必须要选中覆盖还原哦。
3、如果数据库中有ndf文件,执行完第一步后,会出现ndf没有还原的错误提示,提示中有原路径,只要按路径新建文件夹就行了。
第二步:
另一串代码:
1、如果只有一个Bak,没有mdf的数据库文件,需要先创建一个mdf数据库文件。
2、如果不知道mdf的数据库名称,可以,先还原bak,会弹出提示。
3、执行代码,按照提示修改就行了。
ALTER DATABASE [数据库名] SET OFFLINE WITH ROLLBACK IMMEDIATE --断开其他用户与数据库的连接
USE MASTER --这里注意要使用MASTER,以免出现待还原库被占用的情况
RESTORE DATABASE [数据库名] --为待还原库名
FROM DISK = 'C:\xxx.bak' ---备份文件名
WITH MOVE '数据库名' TO 'C:\bakeup\数据库名.mdf', ---指定数据文件路径
MOVE '数据库名_LOG' TO 'C:\bakeup\数据库名_log.ldf', ---指定日志文件路径
STATS = 10, REPLACE
GO
ALTER database [数据库名] set online