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