首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL Server数据库在使用NORECOVERY备份日志后陷入正在还原状态

是因为该备份操作是为了将数据库还原到一个特定的时间点或者特定的事务。在还原过程中,数据库会处于还原状态,直到所有的事务日志都被应用并且数据库恢复到指定的时间点或事务。

在这种情况下,可以采取以下步骤来解决问题:

  1. 确保备份文件存在并且可用。检查备份文件的路径和名称是否正确,并且文件没有被移动或删除。
  2. 确保数据库处于恢复模式。使用以下命令检查数据库的恢复模式:
  3. 确保数据库处于恢复模式。使用以下命令检查数据库的恢复模式:
  4. 如果恢复模式不是“FULL”或“BULK_LOGGED”,则需要将其更改为“FULL”模式以支持日志备份和还原。
  5. 执行还原操作。使用以下命令执行还原操作:
  6. 执行还原操作。使用以下命令执行还原操作:
  7. 这将开始还原过程,并将数据库置于还原状态。
  8. 等待还原完成。数据库将自动应用所有的事务日志,并恢复到指定的时间点或事务。这个过程可能需要一些时间,具体取决于数据库的大小和日志备份的数量。
  9. 检查还原状态。使用以下命令检查还原状态:
  10. 检查还原状态。使用以下命令检查还原状态:
  11. 如果状态为“ONLINE”,则表示还原已完成。如果状态为“RESTORING”,则表示还原仍在进行中。
  12. 完成还原。如果还原状态为“RESTORING”,则需要继续应用更多的事务日志。使用以下命令完成还原:
  13. 完成还原。如果还原状态为“RESTORING”,则需要继续应用更多的事务日志。使用以下命令完成还原:
  14. 这将完成还原过程并将数据库置于可用状态。

对于SQL Server数据库的还原操作,腾讯云提供了一系列的产品和服务来支持,例如云数据库SQL Server版、云数据库灾备、云数据库备份等。您可以访问腾讯云官方网站了解更多详细信息和产品介绍。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL Server 2012 数据库备份还原「建议收藏」

数据库备份,即从SQL Server数据库或其事务日志中将数据或日志记录复制到相应的设备,以创建数据副本或事务日志副本。数据还原用于将指定SQL Server备份中的所有数据和日志复制到指定数据库,然后通过应用记录的更改使该数据在时间上向前移动,以回滚备份中记录的所有事物。     设计一个好的备份和还原策略需考虑多方面的因素,包括备份内容、备份计划、备份介质、备份设备、备份类型和恢复模式。在SQL Server 2012系统中,常见的备份类型有完整备份、差异备份、事务日志备份、文件和文件组备份。     “恢复模式”是一种数据库属性,它控制如何记录事务、事务日志是否需要或允许备份,以及可以使用哪些类型的还原操作。有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。通常情况下,数据库使用简单恢复模式或完整恢复模式。     ① 简单恢复模式:数据库记录大多数事务,并不会记录所有的事务,数据库在备份之后,自动截断事务日志,即把不活动的事务日志删除。因此,不支持事务日志备份,也不能恢复到出现故障的时间点,具有较高的安全风险,建议只有对数据安全性要求不高的数据库使用该模式。     ② 完整恢复模式:数据库完整地记录了所有的事务,并保留所有事务的详细日志。支持恢复到出现故障的时间点。该模式可在最大范围内防止出现故障时丢失数据,为数据安全提供了全面的保护。建议对数据安全性、可靠性要求高的数据库使用该恢复模式。     ③ 大容量日志恢复模式:数据库不会对所有事务做完整详细的记录,只对大容量操作做最少的记录。通常情况下,只有在要进行大容量操作之前,才改用该恢复模式,大容量操作结束之后,再设置回原来的恢复模式。

02

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 #

02

SQL Server的六种数据移动方法

1.通过工具DTS的设计器进行导入或导出       DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不多,如果只是进行SQL   Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动。在SQL   Server   Enterprise   Manager中,展开服务器左边的+,选择数据库,右击,选择All   tasks/Import   Data...(或All   tasks/Export   Data...),进入向导模式,按提示一步一步走就行了,里面分得很细,可以灵活的在不同数据源之间复制数据,很方便的。而且可以另存成DTS包,如果以后还有相同的复制任务,直接运行DTS包就行,省时省力。也可以直接打开DTS设计器,方法是展开服务器名称下面的Data   Transformation   Services,选Local   Packages,在右边的窗口中右击,选New   Package,就打开了DTS设计器。值得注意的是:如果源数据库要拷贝的表有外键,注意移动的顺序,有时要分批移动,否则外键主键,索引可能丢失,移动的时候选项旁边的提示说的很明白,或者一次性的复制到目标数据库中,再重新建立外键,主键,索引。         其实建立数据库时,建立外键,主键,索引的文件应该和建表文件分开,而且用的数据文件也分开,并分别放在不同的驱动器上,有利于数据库的优化。         2.   利用Bcp工具         这种工具虽然在SQL   Server7的版本中不推荐使用,但许多数据库管理员仍很喜欢用它,尤其是用过SQL   Server早期版本的人。Bcp有局限性,首先它的界面不是图形化的,其次它只是在SQL   Server的表(视图)与文本文件之间进行复制,但它的优点是性能好,开销小,占用内存少,速度快。有兴趣的朋友可以查参考手册。         3.   利用备份和恢复         先对源数据库进行完全备份,备份到一个设备(device)上,然后把备份文件复制到目的服务器上(恢复的速度快),进行数据库的恢复操作,在恢复的数据库名中填上源数据库的名字(名字必须相同),选择强制型恢复(可以覆盖以前数据库的选项),在选择从设备中进行恢复,浏览时选中备份的文件就行了。这种方法可以完全恢复数据库,包括外键,主键,索引。       4.   直接拷贝数据文件         把数据库的数据文件(*.mdf)和日志文件(*.ldf)都拷贝到目的服务器,在SQL   Server   Query   Analyzer中用语句进行恢复:     EXEC   sp_attach_db   @dbname   =   ’test’,     @filename1   =   ’d:mssql7data   est_data.mdf’,     @filename2   =   ’d:mssql7data   est_log.ldf’         这样就把test数据库附加到SQL   Server中,可以照常使用。如果不想用原来的日志文件,可以用如下的命令:       EXEC   sp_detach_db   @dbname   =   ’test’     EXEC   sp_attach_single_file_db   @dbname   =   ’test’,     @physname   =   ’d:mssql7data   est_data.mdf’         这个语句的作用是仅仅加载数据文件,日志文件可以由SQL   Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。         5.   在应用程序中定制         可以在应用程序(PB、VB)中执行自己编写的程序,也可以在Query   Analyzer中执行,这种方法比较灵活,其实是利用一个平台连接到数据库,在平台中用的主要时SQL语句,这种方法对数据库的影响小,但是如果用到远程链接服务器,要求网络之间的传输性能好,一般有两种语句:     1>select   ...   into   new_tablename   where   ...     2>insert   (into)   old_tablename   select   ...   from   ...   where   ...       区别是前者把数据插入一个新表(先建立表,再插入数据),后者是把数据插入已经存在的一个表中,我个人喜欢后者,因为在编程的结构上,应用的范围上,第二条语句强于前者。         6.

03

SQL server数据库恢复案例分析

本次故障环境为4台服务器,每台服务器12块盘分为2组raid,共8组raid。经客户描述共4个节点,其中一个节点故障之后仍在继续使用,第二个节故障之后,进行过一系列的重新上线操作,导致管理存储软件无法使用。 为防止在数据恢复过程中由于部分操作对原始磁盘造成不可还原的修改,导致数据出现二次丢失,对原始磁盘进行镜像备份。北亚工程师进行详细分析,获取到5台节点服务器上的所有硬盘的底层镜像。经过分析,发现底层部分索引位图被破坏。对全部镜像文件进行分析,根据底层数据重组raid,并提取每组raid中的map,对数据map进行分析,根据位图手工索引数据,排除部分损坏位图。客户主要数据为SQL server数据库,经初步检测,索引位图有部分损坏,因此若提取数据卷后数据有损坏,可针对数据库进行修复。 【数据恢复过程】 1.重组RAID 工程师对RAID条带大小、盘序、校验方向的关键信息分析后,判断成员盘离线顺序。分别对十组RAID进行重组,并生成RAID镜像文件。

02
领券