首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server:数据库处于“恢复”状态?

SQL Server:数据库处于“恢复”状态?

提问于 2017-12-20 02:36:46
回答 2关注 0查看 996

我备份了一个数据库:

代码语言:txt
AI代码解释
复制
BACKUP DATABASE MyDatabase
代码语言:txt
AI代码解释
复制
TO DISK = 'MyDatabase.bak'
代码语言:txt
AI代码解释
复制
WITH INIT --overwrite existing

然后试图恢复它:

代码语言:txt
AI代码解释
复制
RESTORE DATABASE MyDatabase
代码语言:txt
AI代码解释
复制
   FROM DISK = 'MyDatabase.bak'
代码语言:txt
AI代码解释
复制
   WITH REPLACE --force restore over specified database

现在,数据库仍处于恢复状态。

有人认为,这是因为备份中没有日志文件,需要使用以下命令进行滚动:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
RESTORE DATABASE MyDatabase
代码语言:txt
AI代码解释
复制
WITH RECOVERY 

除此之外,当然失败了:

代码语言:txt
AI代码解释
复制
Msg 4333, Level 16, State 1, Line 1
代码语言:txt
AI代码解释
复制
The database cannot be recovered because the log was not restored.
代码语言:txt
AI代码解释
复制
Msg 3013, Level 16, State 1, Line 1
代码语言:txt
AI代码解释
复制
RESTORE DATABASE is terminating abnormally.

而在灾难性的情况下,你想要的是一个不可能的恢复。

备份包含数据和日志文件:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
RESTORE FILELISTONLY 
代码语言:txt
AI代码解释
复制
FROM DISK = 'MyDatabase.bak'
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
Logical Name    PhysicalName
代码语言:txt
AI代码解释
复制
=============   ===============
代码语言:txt
AI代码解释
复制
MyDatabase    C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
代码语言:txt
AI代码解释
复制
MyDatabase_log  C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF

回答 2

秋之夕颜清

发布于 2017-12-20 03:14:59

你需要使用该WITH RECOVERY选项和数据库RESTORE命令,将数据库联机作为还原过程的一部分。

这当然只有在你不打算恢复任何事务日志备份时,也就是说,你只希望恢复数据库备份,然后才能访问数据库。

你的命令应该是这样的,

代码语言:txt
AI代码解释
复制
RESTORE DATABASE MyDatabase
代码语言:txt
AI代码解释
复制
   FROM DISK = 'MyDatabase.bak'
代码语言:txt
AI代码解释
复制
   WITH REPLACE,RECOVERY

在SQL Server Management Studio中使用还原数据库向导可能会获得更多成功。这样,您可以选择特定的文件位置,覆盖选项和WITH恢复选项。有时候,恢复过程只是因为数据库文件的大小而停滞不前。

心愿

发布于 2017-12-20 03:14:24

备份了一个数据库:

代码语言:txt
AI代码解释
复制
BACKUP DATABASE MyDatabase
代码语言:txt
AI代码解释
复制
TO DISK = 'MyDatabase.bak'
代码语言:txt
AI代码解释
复制
WITH INIT --overwrite existing

然后试图恢复它:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
RESTORE DATABASE MyDatabase
代码语言:txt
AI代码解释
复制
   FROM DISK = 'MyDatabase.bak'
代码语言:txt
AI代码解释
复制
   WITH REPLACE --force restore over specified database

现在,数据库仍处于恢复状态。

有人认为,这是因为备份中没有日志文件,需要使用以下命令进行滚动:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
RESTORE DATABASE MyDatabase
代码语言:txt
AI代码解释
复制
WITH RECOVERY 

除此之外,当然失败了:

代码语言:txt
AI代码解释
复制
Msg 4333, Level 16, State 1, Line 1
代码语言:txt
AI代码解释
复制
The database cannot be recovered because the log was not restored.
代码语言:txt
AI代码解释
复制
Msg 3013, Level 16, State 1, Line 1
代码语言:txt
AI代码解释
复制
RESTORE DATABASE is terminating abnormally.

而在灾难性的情况下,你想要的是一个不可能的恢复。

备份包含数据和日志文件:

代码语言:txt
AI代码解释
复制
RESTORE FILELISTONLY 
代码语言:txt
AI代码解释
复制
FROM DISK = 'MyDatabase.bak'
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
Logical Name    PhysicalName
代码语言:txt
AI代码解释
复制
=============   ===============
代码语言:txt
AI代码解释
复制
MyDatabase    C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
代码语言:txt
AI代码解释
复制
MyDatabase_log  C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF
和开发者交流更多问题细节吧,去 写回答
相关文章
SQL Server数据库恢复教程
SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。本次需要进行数据恢复的服务器是一台r520型号存储,共有7块SAS硬盘分别组成RAID1和RAID5两组磁盘阵列。
北亚数据安全与救援
2021/04/02
2.4K0
SQL Server数据库恢复教程
SQL server数据库恢复案例分析
本次故障环境为4台服务器,每台服务器12块盘分为2组raid,共8组raid。经客户描述共4个节点,其中一个节点故障之后仍在继续使用,第二个节故障之后,进行过一系列的重新上线操作,导致管理存储软件无法使用。 为防止在数据恢复过程中由于部分操作对原始磁盘造成不可还原的修改,导致数据出现二次丢失,对原始磁盘进行镜像备份。北亚工程师进行详细分析,获取到5台节点服务器上的所有硬盘的底层镜像。经过分析,发现底层部分索引位图被破坏。对全部镜像文件进行分析,根据底层数据重组raid,并提取每组raid中的map,对数据map进行分析,根据位图手工索引数据,排除部分损坏位图。客户主要数据为SQL server数据库,经初步检测,索引位图有部分损坏,因此若提取数据卷后数据有损坏,可针对数据库进行修复。 【数据恢复过程】 1.重组RAID 工程师对RAID条带大小、盘序、校验方向的关键信息分析后,判断成员盘离线顺序。分别对十组RAID进行重组,并生成RAID镜像文件。
北亚数据安全与救援
2021/11/08
8400
SQL Server 数据恢复
--创建测试数据库 CREATE DATABASE Db GO --对数据库进行备份 BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT GO --创建测试表 CREATE TABLE Db.dbo.TB_test(ID int) --延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败) WAITFOR DELAY '00:00:01' GO --假设我们现在误操作删除了 Db.dbo.TB_test 这个表 DROP TABLE Db.dbo.TB_test --保存删除表的时间 SELECT dt=GETDATE() INTO # GO --在删除操作后,发现不应该删除表 Db.dbo.TB_test --下面演示了如何恢复这个误删除的表 Db.dbo.TB_test --首先,备份事务日志(使用事务日志才能还原到指定的时间点) BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT GO --接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行) RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY GO --将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早 DECLARE @dt datetime SELECT @dt=DATEADD(ms,-20,dt) FROM # --获取比表被删除的时间略早的时间 RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt GO --查询一下,看表是否恢复 SELECT * FROM Db.dbo.TB_test /*--结果: ID ----------- (所影响的行数为 0 行) --*/ --测试成功 GO --最后删除我们做的测试环境 DROP DATABASE Db DROP TABLE #
_一级菜鸟
2020/08/02
1.3K0
使用 WGCLOUD 监测SQL Server数据库状态
WGCLOUD是一款高效轻量的运维平台,它可以监测各种数据库的运行状态,如果出现连不上的情况,也会及时告警,比如SQL Server,我们就看下它怎么监控SQL Server数据库,非常简单
那年十八
2022/11/21
1.1K0
使用 WGCLOUD 监测SQL Server数据库状态
SQL数据恢复总结 - sql server 2012数据库基础-数据恢复-实验报告
数据恢复是对数据库进行备份和还原,当数据库因为各种原因被损坏或者无法读取的时候,会造成无法估量的后果,这个时候就需要数据库还原工具,进行还原。
Designer 小郑
2023/08/01
3680
SQL数据恢复总结 - sql server 2012数据库基础-数据恢复-实验报告
SQL Server 镜像数据库切换及同步状态变化
正常情况下都是在主Server上执行的,此时主Server上DB仍然可以正常访问。
东山絮柳仔
2021/03/20
1.6K0
SQL server 权限管理与数据恢复
1、SQL的安全机制: ①客户机安全:系统安全 ②服务器安全:登录SQL实例安全 ③数据库安全:访问数据库安全 ④对象安全:对数据库对象的操作安全 2、服务器安全:登录账户的安全权限 验证方式: Windows身份验证:账户必须为系统账户并添加为SQL的用户 SQL身份验证:在SQL中创建的用户 权限设置:对整个实例有效,通过角色来管理 服务器的固定角色: sysadmin :执行任务活动,administrators属性组 serveradmin :管理服务器的启动 diskadmin :管理磁盘文件 d
L宝宝聊IT
2018/06/20
1.1K0
SQL Server 2012学习笔记 (八) ------ SQL Server 安全机制、备份和恢复
  SQL Server 2012整个安全体系结构从顺序上可以分为认证和授权两个部分,其安全机制可以分为5个层级:
挽风
2021/04/13
1.1K0
windows系统中毒,sql server数据库文件恢复抢救和OA程序文件恢复.
客户是地产行业客户,云服务器主要部署OA和sql server数据库,由于内部IT薄弱,没有做好安全防护,导致服务器被病毒入侵。
用户2966859
2022/02/07
1.7K0
SQL Server数据库碎片
当索引所在页面的基于主关键字的逻辑顺序,和数据文件中的物理顺序不匹配时,碎片就产生了。所有的叶级页包含了指向前一个和后一个页的指针。这样就形成一个双链表。理想情况下,数据文件中页的物理顺序会和逻辑顺序匹配。整个磁盘的工作性能在物理顺序匹配逻辑顺序时将显著提升。对某些特定的查询而言,这将带来极佳的性能。当物理排序和逻辑排序不匹配时,磁盘的工作性能会变得低效,这是因为磁头必须向前和向后移动来查找索引,而不是只象某个单一方向来搜索。碎片会影响I/O性能,不过对于位于SQL Server数据缓冲内的数据页而言,碎片
张善友
2018/01/22
2.9K0
SQL server数据库部署
如今生活中,到处都有数据,我们手机上一个小小的APP软件,在他的身后可能有好几十台服务器支撑着,在服务器上呢拥有数据,每个软件都是有一个后台数据库的。 常用的几个数据库有: SQL server 此数据库是微软开发的只能应用在Windows端,简单、易用 oracle 甲骨文公司开发的 它面向所有的主流平台,安全、完善,但是操作复杂 DB2 IBM公司开发,面向所有主流平台,适用于大型企业环境,安全、完善 MySQL(Mariadb) 甲骨文公司所收购,开源、体积小、速度快、稳定 SQL server数据库分为系统数据库和用户数据库两类,其中系统数据库有四个:
小手冰凉
2019/09/10
3.4K0
SQL server数据库部署
SQL Server 数据库设计
SQL Server 系统数据库在安装软件时自动创建,用于协助系统共同完成对数据库的操作;也是数据库运行的基础;
剑指工控
2021/11/09
2.6K0
SQL Server 数据库设计
SQL Server数据库介绍
1、数据库基本概念 数据:描述事物的符号 数据表:由记录(行)和字段(列)组成 数据库:数据表的集合 数据库管理系统:对数据库进行管理和维护DBMS 数据库管理员:DBA负责数据库管理和维护 数据库系统:由硬件、操作系统、数据库、数据库管理系统、应用软件和用户组成 2、DBMS数据模型: 网状模型:支持多对多、多对一的关系 层次模型:支持一对多 关系模型:通过E-R模型(实体-关系图) 3、主流数据库: SQL Server:只能在Windows平台,简单、易用 Oracle:甲骨文公司出品,主流平台
企鹅号小编
2018/01/30
2.4K0
SQL Server数据库介绍
连接SQL Server 数据库
        在服务器名称选择本机(连接本机的 SQL Server 数据库)。目前,本机只有一个 SQL
会洗碗的CV工程师
2022/11/29
3.5K0
连接SQL Server 数据库
SQL Server数据库介绍
1、数据库基本概念 数据:描述事物的符号 数据表:由记录(行)和字段(列)组成 数据库:数据表的集合 数据库管理系统:对数据库进行管理和维护DBMS 数据库管理员:DBA负责数据库管理和维护 数据库系统:由硬件、操作系统、数据库、数据库管理系统、应用软件和用户组成 2、DBMS数据模型: 网状模型:支持多对多、多对一的关系 层次模型:支持一对多 关系模型:通过E-R模型(实体-关系图) 3、主流数据库: SQL Server:只能在Windows平台,简单、易用 Oracle:甲骨文公司出品,主流平台、
L宝宝聊IT
2018/06/20
1.8K0
将 SQL Server 数据库恢复到不同的文件名和位置
一、概述 RESTORE ... WITH MOVE 选项允许您恢复数据库,但也可以指定数据库文件(mdf 和 ldf)的新位置。如果您要从该数据库的备份还原现有数据库,则不需要这样做,但如果您要从具有不同文件位置的不同实例还原数据库,则可能需要使用此选项。 RESTORE ... WITH MOVE 选项将让您确定数据库文件的名称以及创建这些文件的位置。在使用此选项之前,您需要知道这些文件的逻辑名称以及 SQL Server 的位置。 如果已经存在另一个使用您尝试还原的相同文件名的数据库并且该数据库处于联
IT大咖说
2022/08/26
1.2K0
将 SQL Server 数据库恢复到不同的文件名和位置
SQL Server 2008无备份误删数据的恢复
系统已上线,给客户修改bug的时候,使用delete语句删表数据,没想到库没切换成测试库。误删了SQL Server正式库的数据,而且一次备份都没有做过,玩大了。
星哥玩云
2022/08/17
1.6K0
SQL Server 2008无备份误删数据的恢复
删除处于Terminating状态的namespace
可以看到monitoring这个namespace一直处于Terminating状态,一般情况下强删是删不掉的,强删的方法如下:
dogfei
2020/08/19
1.1K0
java操作sql server数据库
请先确保已经设置好了sa,如果不是,可以参照下面链接修改http://jingyan.baidu.com/article/8cdccae9452b3c315513cd52.html
Python研究者
2021/08/22
1.5K0
SQL Server 数据库连接类
package edu.qdgxy.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; //1.加载驱动;2.建立连接3.创建Statement对象4.执行sql 5.关闭资源 public class DBBean { private String drive
week
2018/08/27
2.7K0

相似问题

sql server数据库无法远程连接?

21.1K

可以试用云数据库SQL SERVER吗?

1566

mysql长时间处于sending data状态问题?

11.2K

SQL SERVER 2008数据库磁盘空间不足?

1930

为什么到现在还处于认证状态中?

2271
相关问答用户
平安资管 | 架构师擅长4个领域
擅长3个领域
擅长4个领域
腾讯云TDP | 高级后端开发工程师擅长3个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档