首页 新闻 会员 周边

SqlServer2012还原数据库失败,请大神帮我看看

0
悬赏园豆:5 [已解决问题] 解决于 2016-11-26 21:32

如下图, 首先在sqlserver里面新建了一个数据库"JSKJ_1125", 路径是存放在D:\DB目录下, 然后对该数据库右键还原

选择备份文件, 并"勾选覆盖现有数据库", 提示如下图所示错误——(无法覆盖文件 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\JSKJ_DEV_Data.mdf'。数据库 'JSKJ_1123' 正在使用该文件。)

这个地方不明白,新建数据库的时候明明是建在D:/DB目录下面的,这个JSKJ_DEV_Data.mdf文件是干嘛的,为啥还原的时候和这个文件有关呢?

 

 

 

 

yangyong0615的主页 yangyong0615 | 初学一级 | 园豆:154
提问于:2016-11-25 11:08
< >
分享
最佳答案
0

你试试用sql语句进行还原。

RESTORE DATABASE ccflow4
FROM DISK ='F:\1MyProject\CCFLOW6\SQL\newSQL\ccport20161116.bak'
with replace,
MOVE 'ccflow4' TO 'F:\SQLExample\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\ccflow4.mdf',
MOVE 'ccflow4_log' TO 'F:\SQLExample\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\ccflow4_log.ldf'

把三个路径改成你的。

http://www.cnblogs.com/liuwenxu/p/6085427.html

收获园豆:5
二环东路 | 菜鸟二级 |园豆:206 | 2016-11-25 17:05

这段语句是干嘛的啊?

yangyong0615 | 园豆:154 (初学一级) | 2016-11-25 20:03

@yangyong_yy:你不是想还原数据库吗,

下面的是把备份还原成数据库的sql语句

RESTORE DATABASE 要还原的数据库名字
FROM DISK ='备份数据库的路径'
with replace,
MOVE 'mdf的文件名' TO 'mdf的路径',
MOVE 'ldf的文件名' TO 'ldf的路径'

二环东路 | 园豆:206 (菜鸟二级) | 2016-11-25 20:09

@二环东路: 

是在master下面执行还是在要还原的数据库下面执行?

另外,最后两句:

MOVE 'mdf的文件名' TO 'mdf的路径',
MOVE 'ldf的文件名' TO 'ldf的路径'

这两个文件是指要还原的数据库的文件吧? 如果不需要更换目录是不是不用执行?

yangyong0615 | 园豆:154 (初学一级) | 2016-11-25 20:23

@yangyong_yy:  你新建查询就行 

比如说A是一个备份文件A.bak       B是你为放A刚刚创建的数据库

RESTORE DATABASE B
FROM DISK ='F:\1MyProject\CCFLOW6\SQL\newSQL\A.bak'
with replace,
MOVE 'B' TO 'F:\SQLExample\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\B.mdf',
MOVE 'B_log' TO 'F:\SQLExample\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\B_log.ldf'

路径的话你根据你自己项目的路径去写就行

二环东路 | 园豆:206 (菜鸟二级) | 2016-11-25 20:33

@二环东路: 好的,谢谢你的回答,  长知识了,  不过我还像是想找到问题中不能还原的原因

yangyong0615 | 园豆:154 (初学一级) | 2016-11-25 20:40

@二环东路: 

大神按你的方法执行还原了, 不过备份的数据库是不带.bak后缀的, 执行结果如下, 请问下这个是什么原因?

yangyong0615 | 园豆:154 (初学一级) | 2016-11-25 23:03
其他回答(3)
0

你是分离的数据库还是备份的数据库?

熊大哥的嫂子 | 园豆:192 (初学一级) | 2016-11-25 13:23

备份的

支持(0) 反对(0) yangyong0615 | 园豆:154 (初学一级) | 2016-11-25 20:04
0

提示很明显是显示文件被占用,不能够使用还原。建议看看文件两边是不是有占用情况。然后应该就没问题了

M哥 | 园豆:206 (菜鸟二级) | 2016-11-25 15:06

(无法覆盖文件 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\JSKJ_DEV_Data.mdf'。数据库 'JSKJ_1123' 正在使用该文件。)

我对这段提示不明白, 我还原的JSKJ_1125数据库,  和JSKJ_DEV_Data.mdf这个文件有啥关系?

支持(0) 反对(0) yangyong0615 | 园豆:154 (初学一级) | 2016-11-25 20:01
0

网上查了一下,终于解决了。虽然新建空库的时候,指定了文件和日志的地址是D:\DB,但是sql server2012在还原的时候会默认把地址修改为原备份文件的地址,所以如果该备份文件已经被还原过一次后, 再次还原的时候就会报错,提示“XXX”数据库正在使用该文件,只要把地址路径重新指定为当前数据库地址即可;

yangyong0615 | 园豆:154 (初学一级) | 2016-11-26 21:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册