• --1.最近的完整备份 BACKUP DATABASE DBName TO DISK = N'C:\Test.bak' --2.发现错误页(可以人为破坏) SELECT * FROM msdb.dbo.suspect_pages --3....BACKUP LOG DBName TO DISK = 'C:\Test_LOG1.bak' ...--3....
    --1.最近的完整备份
    BACKUP DATABASE DBName TO DISK = N'C:\Test.bak'
    
    --2.发现错误页(可以人为破坏)
    SELECT * FROM msdb.dbo.suspect_pages
    
    --3.立即备份日志1
    BACKUP LOG DBName TO
    DISK = 'C:\Test_LOG1.bak'
    WITH INIT
    
    --3.用完整备份,还原数据损坏的页
    USE Master
    RESTORE DATABASE DBName
    PAGE = '1:832'
    FROM DISK = 'C:\Test.bak'
    WITH NORECOVERY
    
    --4.备份日志2
    BACKUP LOG DBName TO
    DISK = 'C:\Test_LOG2.bak'
    WITH INIT
    
    --5.还原日志1
    RESTORE LOG DBName FROM
    DISK = 'C:\Test_LOG1.bak'
    WITH NORECOVERY
    
    --6.还原日志2
    RESTORE LOG DBName FROM
    DISK = 'C:\Test_LOG2.bak'
    WITH NORECOVERY
    
    --7.还原数据库状态,大工告成
    RESTORE DATABASE DBName WITH RECOVERY

     

    展开全文
  • 在windows服务器内装有Sql Server2008数据库。存储空间内共有三个逻辑分区,大小分别为500G、800G、2.3T。数据库文件丢失,主要涉及五个数据库,表个数约为6000个左右。丢失原因未知,且不能确定数据存储位置。三个...

    故障描述:

    5块2T硬盘组建RAID5,划分LUN供windows服务器使用。在windows服务器内装有Sql Server2008数据库。存储空间内共有三个逻辑分区,大小分别为500G、800G、2.3T。数据库文件丢失,主要涉及五个数据库,表个数约为6000个左右。丢失原因未知,且不能确定数据存储位置。三个数据库的大小分别为8G、15G、20G。在文件丢失后服务器仍处于开机状态,但并未写入大量数据。

    初检流程:

    1、使用RAID信息及内部数据块信息重组RAID。

    重组RAID

    2、提取LUN内三个分区镜像。

    3、扫描文件系统内丢失文件,未找到被删除数据库文件。

    4、初检结果为数据库文件丢失,通过文件系统角度无法恢复。

    恢复流程:

    1、制定恢复方案。在数据库文件被删除且判定为无法恢复文件后,只能通过扫描数据页,并提取页内记录的方式进行恢复。

    2、使用北亚自主编数据页扫描程序扫描分区内数据页并提取。在分别扫描两个分区镜像后发现500G系统盘内数据页数量极少且数据页断裂情况严重,另一分区内扫描到数据页个数较多。暂定此分区为数据库文件存储空间。

    扫描数据页

    3、重组系统表。Sql Server数据库使用系统表来管理所有用户表,在这些系统表内记录了各表的列数、数据类型及约束信息等。解析系统表过程中发现提取出的数据页内系统表损坏,无法正常读取信息。在与客户沟通后得知有备份文件,且备份完成后没有大量改动表结构,系统表可用。

    4、还原备份。

    还原备份

    5、分别提取三个库中各表表结构信息

    提取表结构信息

    6、解析表结构脚本。将各表的列信息存入数据库内便于后续使用。

    扫描脚本文件

    表结构信息存入数据库

    7、解析系统表获取用户表id信息、关联表结构与数据页。(为保护客户隐私,后续步骤涉及用户表表名及数据页内数据部分均未截图)

    8、新建数据库,使用北亚自主编写软件解析记录并导入到恢复环境内。

    9、整理恢复结果。在此分区内除数据库文件外还存有备份文件若干,所以在导出记录后可能存在重复数据,必须去重。编写SQL存储过程进行去重。

    数据库去重

      10、客户验证数据。客户在查验过数据后表示数据可以接受,移交数据到客户存储设备,恢复成功。

    展开全文
  • 太坑了,我把数据给删了 “大坑啊,数据被我误删了。”从事数据库相关工作的过程中,我想应该很多人会有过和我一样的遭遇吧?尤其是在进行update或者delete操作的时候,忘记了where条件。...幸好,还可以数据恢复...

    太坑了,我把数据给删了

    “大坑啊,数据被我误删了。”从事数据库相关工作的过程中,我想应该很多人会有过和我一样的遭遇吧?尤其是在进行update或者delete操作的时候,忘记了where条件。这些毁灭性的操作,足以使你不能淡定。然后就开始到baidu、csdn、csblogs等等找恢复方案。网上呢,也是众说纷纭,一时间,你又崩溃了。这个时候要学会淡定,否则,会让你心碎的。

    幸好,还可以数据恢复

    出现这类问题之后,我们的目的就是想找回误操作之前的数据,在SSMS2008之前,有个很出名的工具LogExploer,但是好像是收费的(反正,我是对收费的工具,都是避而远之)。除了这之外,我们还可以使用日志备份的功能,来完成数据恢复。

    下面我们来讲解用日志备份的方法来恢复数据(有图有真相哦)。

    准备工作:

    1.运行下面的代码,创建RecoverDemo数据库,和TestTable表。

     1 USE [RecoverDemo]
     2 GO
     3 /****** Object:  Table [dbo].[TestTable]    Script Date: 10/22/2014 17:00:36 ******/
     4 SET ANSI_NULLS ON
     5 GO
     6 SET QUOTED_IDENTIFIER ON
     7 GO
     8 SET ANSI_PADDING ON
     9 GO
    10 CREATE TABLE [dbo].[TestTable](
    11     [A] [varchar](50) NULL
    12 ) ON [PRIMARY]
    13 GO
    14 SET ANSI_PADDING OFF
    15 GO
    16 INSERT [dbo].[TestTable] ([A]) VALUES (N'a1')
    17 INSERT [dbo].[TestTable] ([A]) VALUES (N'a2')
    18 INSERT [dbo].[TestTable] ([A]) VALUES (N'a3')
    19 INSERT [dbo].[TestTable] ([A]) VALUES (N'a4')
    20 INSERT [dbo].[TestTable] ([A]) VALUES (N'a5')
    21 INSERT [dbo].[TestTable] ([A]) VALUES (N'a6')
    22 INSERT [dbo].[TestTable] ([A]) VALUES (N'a7')
    23 INSERT [dbo].[TestTable] ([A]) VALUES (N'a8')
    24 INSERT [dbo].[TestTable] ([A]) VALUES (N'a9')
    25 INSERT [dbo].[TestTable] ([A]) VALUES (N'a10')

    2.然后做一次完整备份,至于步骤就没必要说了吧。(恢复数据的前提是,该数据库至少做过一次完整备份)

    提示:因为所有类型的备份都是基于完整备份的,如果没有至少一次的完整备份,其他的备份都是多余的,所以一定要在建完数据库后做一次完整备份。

    3.确认数据库的恢复模式为完整。

    提示:在生产环境中,都强烈建议使用【完整恢复模式】,即使说相对于其他两中恢复模式,完整恢复模式产生的日志会很大,但是在出现问题的时候,这都不算什么了。

    4.执行下面脚本,向TestTable中添加数据。

     1 INSERT [dbo].[TestTable] ([A]) VALUES (N'a11')
     2 INSERT [dbo].[TestTable] ([A]) VALUES (N'a12')
     3 INSERT [dbo].[TestTable] ([A]) VALUES (N'a13')
     4 INSERT [dbo].[TestTable] ([A]) VALUES (N'a14')
     5 INSERT [dbo].[TestTable] ([A]) VALUES (N'a15')
     6 INSERT [dbo].[TestTable] ([A]) VALUES (N'a16')
     7 INSERT [dbo].[TestTable] ([A]) VALUES (N'a17')
     8 INSERT [dbo].[TestTable] ([A]) VALUES (N'a18')
     9 INSERT [dbo].[TestTable] ([A]) VALUES (N'a19')
    10 INSERT [dbo].[TestTable] ([A]) VALUES (N'a20')

    检查结果:select * from TestTable

    灾难发生了

    1.我们误操作删除(delete from TestTable)了TestTable中的数据。

    这个时候,你就该不淡定了。

    别急!我们来恢复数据

    之前的那些都算是抛砖引玉吧,接下来才是我们重点想讲述的。

    1.做日志备份,记住一定要选择【备份日志尾部】。

     

    然后在【选项】中,严格按照红色框中的选择项进行勾选,否则,你可能会哭的。并且保证数据库不要有连接,因为有链接,日志备份是备份不了的。

    2.日志备份后数据库会处于【正在还原状态...】

    日志备份后就可以进行数据还原了

    3.先要还原完整备份,注意一定要选择最后那一次的完整备份,否则是还原不了的。

    4.最后一步就是还原日志备份了,选择恢复的时间点不必太在意,只要填写你误操作之前的时间点,就可以了。

    哈哈,数据还原成功了。

     后事之师

    1.在进行危险操作的的时候一定要,谨慎谨慎,以免造成不必要的麻烦。

    2.一定要养成备份的习惯,千万不要因为嫌弃日志文件过于庞大,就将恢复模式设为【简单】,甚至是删除日志文件,到那个时候神仙恐怕也就不了你了。

     

    转载于:https://www.cnblogs.com/mrzl/p/4043313.html

    展开全文
  • Sqlserver误删数据恢复: 版本:Sqlserver 2005 今天凌晨,开发同事在操作Sqlserver数据库时,误删了一个表一年的数据,由于该数据库是每天两次全备(数据库大小为18G左右),于是就把昨天中午的备份拿过来还原...

    Sqlserver误删数据恢复:

        版本:Sqlserver 2005

        今天凌晨,开发同事在操作Sqlserver数据库时,误删了一个表一年的数据,由于该数据库是每天两次全备(数据库大小为18G左右),于是就把昨天中午的备份拿过来还原出来,然后把这个表的数据导出来还原到生产库上,但是这样的话这个表就少了半天的数据,今天客户知道后要求必须恢复完全。
        我对Sqlserver了解的特别少,也就只能从网上查查资料,然后把Oracle的思路带过来试试。
        
        首先只有备份肯定是不行的 还必须得有事务日志。
        
        看了一下现场的生产环境,日志20多G。。就先对事务日志做了一次备份,据我推测这应该是数据库创建使用到现在的所有的事务日志文件。
        
        事务日志备份完后,在昨天晚上同事还原的临时库的基础上,再利用昨天中午的备份+刚备份的事务日志,再进行还原。
        
        还原选项大概是这样的:

       由于之前没操作过Sqlserver恢复+在生产库上操作,操作起来特别害怕。。还特害怕把现在正在用的正式库还原了
        (所有的恐惧都是源于未知)
        
        常规选项页中选好还原的目标时间点,下面选好源数据库后会自动关联出可用的备份集
        
        特别要注意的是选项中移一定要修改还原为的路径
        
        还原的时候 可以通过sp_who2定位还原的会话,然后通过以下sql监控还原进度:

    SELECT session_id,
           percent_complete,
           request_id,
           start_time,
           status,
           command,
           sql_handle,
           database_id,
           user_id,
           blocking_session_id,
           wait_type,
           wait_time,
           last_wait_type,
           wait_resource,
           open_transaction_count,
           open_resultset_count,
           transaction_id,
           estimated_completion_time,
           cpu_time,
           total_elapsed_time,
           scheduler_id,
           reads,
           writes,
           logical_reads
      FROM sys.dm_exec_requests
     WHERE session_id = 54

      查出是status字段一直是suspended,让我以为恢复被什么阻塞了呢,然后发现percent_complete一直在上涨,判断status字段应该没有什么影响吧。。
     
     恢复完成后顺利的从数据库里面找到了之前未恢复的数据。

    展开全文
  • 由于长时间从事企业应用系统开发,前往用户现场升级、调试系统是比较常做的事情,但是就在周一,由于同事的失误在毫无知觉的情况下误删了生产数据库几乎所有的数据。当我发现的那一刻,感觉头发都立起来了,心想这他...

    由于长时间从事企业应用系统开发,前往用户现场升级、调试系统是比较常做的事情,但是就在周一,由于同事的失误在毫无知觉的情况下误删了生产数据库几乎所有的数据。当我发现的那一刻,感觉头发都立起来了,心想这他娘的是要领盒饭了。
      为了迅速恢复系统的使用,在当时的情况下立即关闭相关系统的访问入口,前后共花费不到五分钟。经过思考,立即将最近的一次备份文件进行还原,从而保证了系统的正常运行,但是此举也不可避免的可能会丢掉某些数据。

      另外事情已经发生,如何做才能为以后的数据恢复做准备呢,以下是自己的观点:

    1、务必冷静,事情已经发生不可慌乱。

    2、立即查看当前时间,最好能够精确到秒,并做记录。

    3、应立即向直接上级反映此事,不可隐瞒,防止事态扩大。

    4、如果权限允许,应当立即停止相关应用,防止有新的数据写入数据库。

      事后一直不放心,当下次再出现这种情况的时候,该如何对数据进行数据恢复,尽可能的减小损失呢(做不到完全避免损失),因此从网上查阅大量资料并进行整理。

      之前生产数据库使用的是sqlserver2000和2005,当时也出现过误删数据的情况,用Log Exlorer For SQL很轻松就恢复了数据,现在数据库升级到2012了这个工具无法使用了,因此只能采用其他办法,在此需要特别鸣谢CSDN一位大神的文章,网址:http://blog.csdn.net/dba_huangzj/article/details/8491327

      原文是SQLSERVER2008R2,本次试验环境是2012版本。根据文章中过程的介绍,进行了整个过程的操作,但是还是未能一遍完成,现在在自己的操作过程中进行总结,并分享。

    在此构建一个新的数据库模拟数据恢复全过程。

    1、构建新数据库以及写入一些数据


    2、做一次完整备份,这个是前提,没有一份完整备份文件是无法进行接下来的操作的。

    注意:如上图所示,恢复模式一定要说完整,如果是其他类型那恐怕就没有下文了。一般来讲新建数据库的时候,默认不要去改恢复模式这个属性。

    3、写入一条新数据


    4、删除数据,让悲剧重现,记住此时要记录时间点,在现实中往往会由于慌乱忘记记录,但是希望看了这个文章之后能够记住此事。


    好既然悲剧已经发生,也有了心理准备和恢复前准备,此刻最好看一下系统时间。接下来就要演示如何进行数据恢复。 


    5、做事务日志备份,做事务日志备份需要注意一下一点,如图所示

    备份模式请选择事务日志,备份路径自行决定

     

    进入选项,将可靠性第1、2勾选,事务日志选择第二个,压缩属性可以不选择.点击确定备份成功,此时数据库将显示为正在还原状态

    注意:如果备份失败,请检查该数据库是否正在被占用,如果是请kill。

    6、还原完整备份

    数据库处于正在还原状态,右键数据库--任务--还原--文件和文件组,选择最近的一次完整备份。此时,需要在“选项”中选择第二种还原方式,具体如下图。

     

    如上图,勾选完整数据备份文件。

    如上图,恢复状态选择第二种,从字面意思就知道为什么要选择这种。

    7、接着还原备份的事务日志

    完整备份还原完毕,接着要对事务日志进行还原,右键数据库--任务--还原--事务日志,如下图:

    还原事务日志的时候需要特别注意“时间点”这个设置,其他不需要设置。

    时间点选择为误删数据的时间点之前就可以恢复出误删的数据,所以之前强调要查看一下时间。如下图所示



    点击确定,在确定等待还原成功,数据库变成可用状态。此时后再查询,如下图:



    如果查询发现数据不是你想要的,那么可以重复上述的操作,从备份事务日志开始,然后最后选择时间点的时候在缩小范围。

    以上,完整的演示了个人在恢复数据过程中的总结。当然前提是允许这样干,当然大型电子商务系统、高并发系统应该不适用,肯定也不会出现误删数据的情况,都有对应的解决方案避免此类情况发生。

    转载:

    [原创]LOG EXPLORER FOR SQL SERVER 4.2 (一)    http://www.cnblogs.com/whitney/archive/2008/08/22/1273879.html

    实战 SQL Server 2008 数据库误删除数据的恢复         http://www.cnblogs.com/dudu/archive/2011/10/15/sql_server_recover_deleted_records.html

    高版本sqlserver恢复工具 ApexSQL Log,要收费,据说有破解版,淘宝有售     https://www.apexsql.com/sql_tools_log.aspx

    展开全文
  • 数据库版本:SQL2005数据库 数据库大小 :10.8GB 故障现象:断电后置疑. 软件商开发商使用命令无法修复该数据库,检测数据库提示: 消息 8921,级别 16,状态 1,第 1 行 检查已终止。收集事实数据时检测到...
  • 本来想记录一下利用recovery for sql server 这个软件恢复误删除的数据,但测试了几次不成功,就先转载这位大神的方法,太崇拜他,拿自己的测试库按照他的方法走了一遍。 1)查看数据当前的还原模式是否为FULL,查看...
  • 后缀是.phobos的勒索病毒解密成功,可以百分百完美解密,包括sql数据库文件。2019年以来后缀是ETH的勒索病毒肆虐网络,这种勒索病毒危害大,范围广。无视任何网络,请大家做好防范。新勒索病毒后缀有一下几种:ETH、...
  • SQL Server 数据恢复

    2016-07-07 21:19:25
    配置SQL Server数据库恢复模式(2种方法) 用T-SQL设置恢复模式 你可以使用“ALTER DATABASE”命令加“SET RECOVERY”语句来修改数据库的恢复模式。例如,下面的查询语句把“AdventureWorks”数据库的恢复模式设置为...
  • 由于长时间从事企事业单位的应用系统开发,前往用户现场升级、调试系统是比较常做的事情,但是就在昨日,由于同事的失误在毫无知觉的情况下误删了教材数据库几乎所有的数据,一种不妙感觉油然而生,立即查询,感觉...
  • 相关链接: SQL数据恢复问题深入剖析 强制还原已存在的数据库 一般性的数据库恢复问题解疑问: 一.首先是数据库服务器崩溃或文件被破坏导致数据库不能使用,如果数据没有备份,则在SQL SERVER安装目录的DATA文件夹...
  • ![图片说明]... 在百度上找了一个教程 走到这一步之后 貌似 卡住了 快2个小时了 没有任何反应 求大神 指点啊 这是恢复教程 地址 http://blog.csdn.net/dba_huangzj/article/details/8491327
  • mysql 恢复sql文件

    2019-04-04 12:41:34
    mysql -uroot -proot -Dsakila< ./sakila-data.sql
  • SQL SERVER数据库中勒索病毒 SQL数据库中病毒恢复数据 最近客户中勒索病毒的很多,大家可以下载我们的恢复工具来预览重要的数据。 最新勒索病毒解密及恢复服务 扩展名一般不限制。最近常见的有 .java .CHAK ....
  • sql server三种恢复模式

    2012-11-03 18:10:43
    1,完整sql server恢复模式: 数据库引擎把所有操作都记录到事务日志上,并且数据库引擎绝对不会截断日志,完整恢复模式能使数据库恢复到故障时间点。 2,简单sql server恢复模式: 数据库引擎最低限度地...
  • 问题的产生:最近在完成一个大作业,自己查资料写的一个文件管理系统,用到了SQLserver数据库,但是呢?在数据库移植的时候,遇到了一些问题,经过一天的摸索,特记录如下:  第一种办法:直接从XXX.mdf文件中恢复...
  • 第2行sql语句 误删除数据,第3行语句设置允许行移动,第4行语句闪回将表的数据恢复到删除之前的状态。 备注:指定的时间是删除之前的时间!
  • SQLServer恢复表级数据

    2012-12-17 21:56:42
    最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update、delete出现了无法恢复的后果,加上那些库都是几十G。恢复起来少说也要十几分钟。为此,找了一些资料和工作总结,给出一下...
  • 数据库恢复可以分如下几种情况1.数据库日志保存完整的时候Log Explorer ...
  • SQL Server数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式:   1.Simple 简单恢复模式, Simple模式的旧称叫”Checkpoint with truncate log“,其实这个名字更形象,在Simple模式下,...
1 2 3 4 5 ... 20
收藏数 233,850
精华内容 93,540