我们在工作中常常会因为要解决现场问题,而对现场数据库进行数据库备份,通过我们在实验室还原现场数据库而找到原因所在,而还原是我们往往会出现一定的问题,现做一汇总。


问题一:

1.无法获得对数据库独立访问权

如下图:

sql server 2019还原数据库失败 sql数据库还原失败怎么办_数据库备份


原因分析:

1. 数据库被使用,特别是我们的程序远程连接数据库,并不断请求、操作数据库信息

2. 数据库备份的文件的存放位置和我们实验室存放数据库的位置不同,此时执行会出现此情况

(如我们现场数据库存的是D盘,而我们实验室一般选的C盘),查看具体路径如下图“在数据库还原窗口——选择“选项” ” ,如下图


sql server 2019还原数据库失败 sql数据库还原失败怎么办_脱机_02




解决方法:

(1)删除现有数据库,关闭现有连接,新建一个和数据库同名的空白数据库,然后在还原窗口——选项——选择“覆盖现有数据库”即可。

(2)分离数据库,再进行附加,再进行还原即可

(3)【推荐第3种】

  • 步骤1:执行SQL 语句--目的是回滚不合法日志并脱机(OFFLINE)(2013-08-16更新)

ALTER DATABASE DBNAME SET OFFLINE WITH ROLLBACK IMMEDIATE 

注:

DBNAME为数据库名,执行时改为自己的数据库

执行时建议要选择在master下,如果选用自己使用的数据库,会提示“正在回滚不合法事务。估计回滚已完成: 100%。重新启动当前数据库失败。当前数据库已切换为 master。”

  • 步骤2:执行后,刷新数据库会发现,数据库处于“脱机”状态,右键会发现没有还原数据库这一选项了(当然了,脱机了怎么会有这一项呢)。此时在其上级目录 数据库上右键选择 还原数据库文件即可,还原成功后,数据库会自动上线(ONLINE),至此完成数据库的还原。

如下图:




sql server 2019还原数据库失败 sql数据库还原失败怎么办_脱机_03









问题二、目录查找失败

原因:此错误为 我们还原数据库时,没有与数据库同名的数据库存在,所以导致无法还原

解决方案:新建一个同名的空白数据库,然后还原对其覆盖即可

sql server 2019还原数据库失败 sql数据库还原失败怎么办_分割线_04


问题3、备份集的数据库与现有数据库不同&尚未备份数据库的日志尾部


原因:新建空白数据库(注意一定要和还原的数据库同名)后,还原数据库时为选中“覆盖现有数据库”


解决方案:勾选“覆盖现有数据库”




sql server 2019还原数据库失败 sql数据库还原失败怎么办_数据库_05

sql server 2019还原数据库失败 sql数据库还原失败怎么办_脱机_06


具体操作步骤截图


sql server 2019还原数据库失败 sql数据库还原失败怎么办_数据库_07



sql server 2019还原数据库失败 sql数据库还原失败怎么办_数据库备份_08


sql server 2019还原数据库失败 sql数据库还原失败怎么办_分割线_09















----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

分割线(分割线以上为知其所以然,分割线下以下为只知其然,采用第3中方案后很少遇到这种情况,以后再碰到继续研究更新了)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



最终方法:你会发现所有的操作都整过,却还不行。

例如出现以下问题:

执行Transact-SQL语句或批处理时发生了异常。
事务与另一个进程被死锁在锁的资源上,并且已被选作死锁牺牲品。


sql server 2019还原数据库失败 sql数据库还原失败怎么办_脱机_10

如果以上方法仍未解决为题,尝试重启所有服务器即可。

也可在数据库服务器上右键 选择停止 ,在重新启动即可。

或重启数据库服务。 

重新整理文章架构,清晰易懂