我们在工作中常常会因为要解决现场问题,而对现场数据库进行数据库备份,通过我们在实验室还原现场数据库而找到原因所在,而还原是我们往往会出现一定的问题,现做一汇总。
问题一:
1.无法获得对数据库独立访问权
如下图:
原因分析:
1. 数据库被使用,特别是我们的程序远程连接数据库,并不断请求、操作数据库信息
2. 数据库备份的文件的存放位置和我们实验室存放数据库的位置不同,此时执行会出现此情况
(如我们现场数据库存的是D盘,而我们实验室一般选的C盘),查看具体路径如下图“在数据库还原窗口——选择“选项” ” ,如下图
解决方法:
(1)删除现有数据库,关闭现有连接,新建一个和数据库同名的空白数据库,然后在还原窗口——选项——选择“覆盖现有数据库”即可。
(2)分离数据库,再进行附加,再进行还原即可
(3)【推荐第3种】
- 步骤1:执行SQL 语句--目的是回滚不合法日志并脱机(OFFLINE)(2013-08-16更新)
ALTER DATABASE DBNAME SET OFFLINE WITH ROLLBACK IMMEDIATE
注:
DBNAME为数据库名,执行时改为自己的数据库
执行时建议要选择在master下,如果选用自己使用的数据库,会提示“正在回滚不合法事务。估计回滚已完成: 100%。重新启动当前数据库失败。当前数据库已切换为 master。”
- 步骤2:执行后,刷新数据库会发现,数据库处于“脱机”状态,右键会发现没有还原数据库这一选项了(当然了,脱机了怎么会有这一项呢)。此时在其上级目录 数据库上右键选择 还原数据库文件即可,还原成功后,数据库会自动上线(ONLINE),至此完成数据库的还原。
如下图:
问题二、目录查找失败
原因:此错误为 我们还原数据库时,没有与数据库同名的数据库存在,所以导致无法还原
解决方案:新建一个同名的空白数据库,然后还原对其覆盖即可
问题3、备份集的数据库与现有数据库不同&尚未备份数据库的日志尾部
原因:新建空白数据库(注意一定要和还原的数据库同名)后,还原数据库时为选中“覆盖现有数据库”
解决方案:勾选“覆盖现有数据库”
或
具体操作步骤截图
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
分割线(分割线以上为知其所以然,分割线下以下为只知其然,采用第3中方案后很少遇到这种情况,以后再碰到继续研究更新了)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最终方法:你会发现所有的操作都整过,却还不行。
例如出现以下问题:
执行Transact-SQL语句或批处理时发生了异常。
事务与另一个进程被死锁在锁的资源上,并且已被选作死锁牺牲品。
如果以上方法仍未解决为题,尝试重启所有服务器即可。
也可在数据库服务器上右键 选择停止 ,在重新启动即可。
或重启数据库服务。
重新整理文章架构,清晰易懂