无法将SQL Server 2008 R2 Express备份文件还原到SQL Server 2012 Express

时间:2013-11-22 03:43:25

标签: sql-server-2008-r2 sql-server-2012

我有一个.bak文件,我使用SQL Server 2008 R2 Express创建。

我尝试将其还原到SQL Server 2012 Express但收到以下错误消息:

  

Msg 5133,Level 16,State 1,Line 2
  文件“C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ RealEstate.mdf”的目录查找失败,出现操作系统错误3(系统找不到指定的路径。)。

     

Msg 3156,Level 16,State 3,Line 2
  文件'RealEstate'无法还原到'C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ RealEstate.mdf'。使用WITH MOVE标识文件的有效位置。

     

Msg 5133,Level 16,State 1,Line 2
  文件“C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ RealEstate_log.ldf”的目录查找失败,出现操作系统错误3(系统找不到指定的路径。)。

     

Msg 3156,Level 16,State 3,Line 2   文件'RealEstate_log'无法还原到'C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ RealEstate_log.ldf'。使用WITH MOVE标识文件的有效位置。

     

Msg 3119,Level 16,State 1,Line 2
  在规划RESTORE语句时发现了问题。以前的消息提供了详细信息。

     

Msg 3013,Level 16,State 1,Line 2
  RESTORE DATABASE异常终止。

有人可以帮我解决这个问题吗?

供您参考,

.bak文件是从我上个月去世的旧PC上运行的SQL Server 2008 R2数据库创建的。

我刚刚购买了一台新PC并决定安装SQL Server 2012。

我想将此.bak文件还原到在我的新PC上运行的SQL Server 2012中。

在SQL Server 2008 R2中,数据库存储在

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA.

同时在SQL Server 2012中,数据库存储在

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA.

我想知道原始路径是否确实存储在.bak文件中。有人知道吗?

2 个答案:

答案 0 :(得分:0)

如果您要从SQL 2008迁移到SQL 2012,请尝试这样的操作。

RESTORE DATABASE DBName FROM DISK = 'C:\Path\To\Bak\File' WITH REPLACE;

答案 1 :(得分:0)

RESTORE DATABASE RealRestate
   FROM DISK = 'C:\PATH_TO\RealEstate.bak'
   WITH MOVE '<dataname>' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\RealEstate.mdf',
        MOVE '<logname>' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\RealEstate_log.ldf', REPLACE

注意,我已经放入新位置

可以使用

找到<dataname><logname>
restore filelistonly from disk ='C:\PATH_TO\RealEstate.bak'

这将不会恢复任何内容,但会向您显示bak文件的属性。在Logicalname列中,您会看到<dataname>(类型为D)和<logname>(类型为L)的名称