SQL Server备份文件bak,备份后还原出现错误3145,备份集中的数据库备份与现有的 'xxx' 数据库不同。
解决办法如下:
1,新建一个与现有数据库重名的数据库。
如果您不知道数据库名称,别着急,执行下面语句得到备份文件的逻辑文件名:
use master;
--用此语句得到备份文件的逻辑文件名
RESTORE FILELISTONLY FROM DISK = N'E:\database\LocalDB\school.bak'; --备份文件的物理路径
上面的SQL命令执行结果是查询出备份文件信息,逻辑文件名等。
--逻辑文件名看LogicalName字段,一般会有两个文件,如:
--olddb --主逻辑文件名称
--olddb_log --日志逻辑文件名称
好了,根据逻辑文件名称(即原数据库名称)新建数据库。
2,在查询窗口运行如下语句:
use master;
RESTORE DATABASE Test --还原后数据库的名称
FROM DISK = 'E:\database\LocalDB\school.bak' --备份文件的物理路径
WITH replace, MOVE N'Test' TO N'E:\database\LocalDB\Test.mdf', MOVE N'Test_Log' TO N'E:\database\LocalDB\Test_log.ldf'; --还原后逻辑文件和日志文件的物理路径
从语句上来看,和在图形界面的操作是一样的,但是结果却是语句运行成功,图形界面怎么过不去。
还原语句执行结果如下:
已为数据库 'dataname',文件 'panydb' (位于文件 1 上)处理了 808 页。
已为数据库 'dataname',文件 'panydb_log' (位于文件 1 上)处理了 1 页。
正在将数据库 'dataname' 从版本 539 转换为当前版本 611。
数据库 'dataname' 正在从版本 539 升级到版本 551。
数据库 'dataname' 正在从版本 551 升级到版本 552。
数据库 'dataname' 正在从版本 552 升级到版本 553。
数据库 'dataname' 正在从版本 553 升级到版本 554。
数据库 'dataname' 正在从版本 554 升级到版本 589。
数据库 'dataname' 正在从版本 589 升级到版本 590。
数据库 'dataname' 正在从版本 590 升级到版本 593。
数据库 'dataname' 正在从版本 593 升级到版本 597。
数据库 'dataname' 正在从版本 597 升级到版本 604。
数据库 'dataname' 正在从版本 604 升级到版本 605。
数据库 'dataname' 正在从版本 605 升级到版本 606。
数据库 'dataname' 正在从版本 606 升级到版本 607。
数据库 'dataname' 正在从版本 607 升级到版本 608。
数据库 'dataname' 正在从版本 608 升级到版本 609。
数据库 'dataname' 正在从版本 609 升级到版本 610。
数据库 'dataname' 正在从版本 610 升级到版本 611。
RESTORE DATABASE 成功处理了 809 页,花费 1.437 秒(4.606 MB/秒)。
3,点击还原后的数据库,右键“刷新”,果然还原成功。
ok,大功告成。