当使用语句还原数据库时,报如下错误:
消息 3234,级别 16,状态 2,第 29 行
逻辑文件 'LenborMealOrder_Base_2017' 不是数据库 'Members_01' 的一部分。请使用 RESTORE FILELISTONLY 来列出逻辑文件名。
消息 3013,级别 16,状态 1,第 29 行
RESTORE DATABASE 正在异常终止。
原因:此数据库是用sql语句备份而来,引发的错误,原备份和还原的sql语句如下:
--备份 BACKUP DATABASE LeaRunFramework_Base_2016 TO DISK = 'c:\DB_BACKUP\LenborMealOrder_Base_2017.bak' --还原 RESTORE DATABASE Members_01 FROM DISK = 'c:\DB_BACKUP\LenborMealOrder_Base_2017.bak' WITH MOVE 'LenborMealOrder_Base_2017' TO 'c:\DB_BACKUP\Members_01.mdf', MOVE 'LenborMealOrder_Base_2017_log' TO 'c:\DB_BACKUP\Members_01.ldf'
解决方案:查找该数据的逻辑文件名,通过下面的语句即可查出,再修改还原语句中的名称即可。
--获得数据库备份文件的信息 restore filelistonly from disk='c:\DB_BACKUP\LenborMealOrder_Base_2017.bak'
输入命令后,会得到返回值,注意,这里是获取名称,Logicalname 而不是d:/msqlserver/data/test.mdf
如下图,这里找到是jfp 和jfp_log 而不是talkbasicnew.mdf
最后我执行成功的语句:
RESTORE DATABASE
talkbasicnew FROM DISK = 'C:\talklj.bak' WITH replace,
MOVE 'jfp' TO 'D:\install\sqlserver\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\talkbasicnew.mdf'
,MOVE 'jfp_log' TO 'D:\install\sqlserver\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\talkbasicnew.ldf'
变量1、talkbasicnew是自己的数据库名称
变量2、C:\talklj.bak
是从其他服务器上备份回来的源文件
变量3、jfp即来自上面的命令 restore filelistonly from disk='C:\talklj.bak',
得到的名称, jfp_log也是
变量4:
D:\install\sqlserver\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\talkbasicnew.mdf
来自己本地创建的数据库的数据文件路径
修改后的还原语句如下:
--还原 RESTORE DATABASE LenborMealOrder_Base_2017 FROM DISK = 'c:\DB_BACKUP\LenborMealOrder_Base.bak' WITH MOVE 'LeaRunFramework_Base_2016' TO 'c:\DB_BACKUP\LenborMealOrder_Base_2017.mdf', MOVE 'LeaRunFramework_Base_2016_log' TO 'c:\DB_BACKUP\LenborMealOrder_Base_2017.ldf'
执行上述语句即成功还原数据库,如下图: