SQL数据库误删除了数据怎么恢复? (sql 恢复删除数据)

在进行数据处理的过程中,很容易因为错误的操作或意外事件造成数据丢失。尤其是在使用SQL数据库时,误删除数据是一种比较常见的情况。如果数据没有及时备份,可能会导致不可挽回的损失。因此,在遇到错误删除数据的情况时,我们需要采取相应的措施来尽力恢复数据。

我们需要停止对数据库的任何操作,以避免新数据覆盖已经删除的数据。尽快找到误删除数据的原因,考虑能否通过改变某些设置或者进行其他操作来恢复数据。如果误删除数据的原因是程序错误或故障,可以试图修复错误,以便恢复数据。但是,如果数据误删除的原因是人为因素,那么恢复数据将会比较困难。

接下来,我们需要审查数据库的日志文件,找到被删除数据的位置和时间。如果数据库启用了日志记录功能,可以通过查看日志文件恢复已经被删除的数据。日志文件中记录了数据库的许多信息,包括对数据库执行的所有操作,每个操作的时间和操作者。通过分析这些信息,可以确定哪些数据被误删除,并尝试恢复。

如果无法通过日志文件恢复被删除的数据,还可以尝试使用专业的数据恢复软件进行恢复。这些软件可以通过扫描数据库磁盘分区,寻找已经被删除但尚未被覆盖的数据块,然后进行恢复。但这种方法需要一定的技术和经验,需要谨慎操作,避免二次损坏数据。

当然,更好的方法是预防误删除数据的发生,及时备份数据,以便在数据丢失时能够快速恢复。定期备份数据可以减少因为意外情况而导致的数据损失,也能够保证数据的完整性和可靠性。

误删除数据对于数据库的管理和维护是一个严峻的考验。我们需要采取现实有效的措施,及时查找原因,尽可能地恢复数据。同时,也需要在日常工作中加强数据备份和数据管理,预防类似的问题的发生。只有这样才能够保证数据库的正常运行和数据的完整性。

相关问题拓展阅读:

SQL,误删除如何恢复?

数据库都被你删除了啊。

恢复数据的钱够你买一台很好的电脑的,你掂量掂量。

文件恢复软件介绍

VRVFIX

该软件专门用于恢复被CIH病毒破坏的硬盘,被CIH病毒破坏的硬盘,其分区表已被彻底改写,用A盘启动也无法找到硬盘。所以,要恢复C分区的数据,首先要恢复硬盘分区表,这里推荐使用北信源公司为对付CIH病毒而专门推出的硬盘数据挽救工具:VRVFIX,这是一个免费软件,可以在北信源公司的主页下载:http;//

www.vrv.com.cn

使用方法如下: .准备一张无病毒的启动盘,注意要根据原有操作系统及分区情况制作系统引导盘(FAT16或FAT32)。 把下载的VRVFIX.EXE文件拷入该引导盘,要确保还有足够剩余空间,并打开写保护。 用这张引导盘引导染毒的电脑并运行VRVFIX.EXE,按回车键开始计算分区信息并自动恢复,当出现提示时,按回车键,直到出现”Make Partition Table ok”。 至此,修复完成,用引导盘重新引宽卖导系统,除C盘以外的其他逻辑分区(D、E、F…)的数据已经修复,但仍然无法访问C分区。 完成了以上的工作后,就可以着手恢复C分区上的数据了。C分区目录结构被CIH病毒破坏了,无法被访问,要恢复C分区的目录结构,需要用到一个叫Tiramisu的工具软件,如果不是因为CIH病毒,需要了解这个软件的朋友可以访问Ontrack公司的主页:

,这里着重介绍它的具体使用方法。 针对FAT16和FAT32,Tiramisu有For FAT16版和For FAT32版,应根据染毒硬盘的分区情况选择相对应的版本,两个版本均可以在

下载。 制作一张无病毒的引导盘,把HIMEM.SYS和EMM386.EXE两个文件也拷入引导盘然后在CONFIG.SYS中加入:

DOS=HIGH

DEVICE=HIMEM.SYS

DEVICE=EMM386.EXE RAM

把下载的Tiramisu压缩包里的所有文件解压缩到引导盘上。

用这张引导盘引导电脑,运行Tiramisu.exe,在”File”菜单中选择”Start recovery”菜单项,程序开始自动从C分区上寻找目录结构,这个过程所需要的时间由硬盘数据的多少决定。C分区的目录结构搜索结束后,会显示目录搜索结果,从中 CLUS????,但目录里的文件却丝毫无损。用Tiramisu修复后,只是改变了目录名,其结构和文件并未损坏。

至此,硬盘数据全部恢复。

|-page-|

上面的方案比较麻烦但是可以完全恢复被CIH破坏硬盘里面的数据,对于数据不是很重要的用户可以尝试下面的简单恢复方案,虽然简单但不一定能有效地恢复:

设法找到与你的硬盘完全相同的另一个硬盘。然后使用KV300的”KV300/B”命令,将这个硬盘的主引导扇区备份出来。用DOS启动盘引导你的系统,再用KV300的”KV300/K”命令,将前面备份的主引扇区恢复至你的硬盘。恢复后可以试着向硬盘传送系统,如果传送成功,且硬盘能够引导,说明故障排除。

把硬盘取下来作为从盘挂敏轿到其它机器中,运行最新版的Norton Disk Doctor 或其它硬盘修复工具,也能查找丢失的扩展分区。

使用KV300的F10功能来重建硬盘分区表,该功能能够自动查找硬盘的扩展分区表,并把它链回到主引导扇区中,从而恢复D、E、等分区,不过,该方法在某些时候可能无效,恢复出来的分区并不一定正确。 对于C分区无法恢复。

被误删除的文件恢复方案

除了这些病毒,坏道等引起的文件丢失,还有可能就是我们自己不小心删除了有用的文件,下面笔者就讲讲如何使用工具软件恢复误删除的文件。

Recover4All工具软件来恢复

R4A适用于WIN 95/98,支持FAT12、FAT16、FAT32系统,并且还能恢复软盘上的文件。

打开R4A,在工具栏会有Recover按钮及盘符按钮,如果你想恢复C盘上的文件,只需点击”C:”按钮,R4A会在短短的几秒中内帮你搜索出已经删除的文件,并将找到的已删除文件显示在窗口,同时列出文件尺寸、复原的可能性、开始的簇。其中黄色文件夹表示正常存放在硬盘上的文件夹,绿色文件夹表示已经该文件夹已被删除,而淡绿色的是被删除了的文件。找到须要恢复的被误删除的文件,桥巧肆然后点击Recover按钮,出现目的目录界面,选择好保存文件的目录,点击确定,恢复后的文件即自动保存到该目录里。这里有一点需要注意,在用R4A恢复文件时,不能将恢复文件保存到和被删除文件的同一分区内,如果你的硬盘只有一个C盘分区,那么你只能将文件保存到软盘中,或者用另一个硬盘做目的盘。

RecoverNT则是专用在WIN95/98/NT下恢复误删除的文件和子目录的工具,也可以恢复被Format和Fdisk的磁盘,Recover NT支持TCP/IP网络,甚至可以恢复局域网中的客户机上的文件。

|-page-|

首先选择驱动器让RecoverNT扫描,点击Open出现Select Drive(选定驱动器)对话框,选择好磁盘后,开始扫描。然后在扫描的结果中找到自己需要恢复的文件,然后点击右键,出现三个选项:View as Hex(以16进制格式查看)、View as Text(以文本格式查看)、Save(保存)。通常可选择保存来进行文件的恢复,在出现的保存界面中选择目标文件夹,点击确定后,系统即自动将文件恢复并保存到你所指定的这个目录里。 不过该软件是全英文的下面笔者翻译其中重要的英文。

Basic Root Dir(基本根目录)、

Searched Root Dir(被搜索出的根目录)、

Garbage Dir(已删除目录)、

Total Dir(全部目录),

All Files(所有文件,只适用于NTFS)

Original Root Directory (原始根目录)、

Normal Directory(普通目录)、

Garbage Root Directory (已删除的根目录)、

Garbage Directory (已删除的目录)、

Renamed Garbage Directory(更改名称的已删除目录)、

Analyzed Garbage Directory (被分析过的已删除目录)、

File (文件)、

Error File (错误的文件)、

Warning File (警告文件)、

Deleted File (已删除的文件)、

Recovable File(可恢复的文件)、

Saved File (保存文件)。

REVIVAL是一个磁盘/文件修复程序。其功能主要有:

1、不需恢复根目录即能恢复子目录,条件是你必须把恢复后的文件保存到另一驱动器上。

2、如果意外格式化了硬盘,REVIVAL能帮助你恢复数据。

3、硬盘染上了病毒,丢失了分区表、引导扇区、FAT和根目录中的数据,REVIVAL同样能帮你恢复。

4、当你格式化了硬盘,重新安装了WINDOWS95,却发现忘记备份一些必须的文件,REVIVAL可帮助你恢复这些文件,因为这些文件仍保留在

硬盘上的某个位置上。防病毒软件及文件系统修复软件有很多。但这些软件大都不能修复被完全损坏的磁盘。只能跟踪分区表及引导记录,修复部分损坏的文件及目录。而REVIVAL能够搜索整个磁盘上的数据区,并能修复丢失的文件及完全损坏了的目录。现将它的使用方法介绍如下,你会体会到它的神奇之处。

|-page-|

正确安装之后运行该软件,会弹出主界面,在进行扫描磁盘之前,窗口为一片空白。选择FILE/OPEN DRIVE。出现选择驱动器窗口,点其中的软驱A或硬盘C,再按SELECT选定。于是出现SCAN DISK窗口,即开始扫描硬盘或软盘,扫描过程中该窗口显示扫描进度,以CLUSTER/TOTAL来表示。扫描结束之后,分析磁盘目录结构,最后窗口中出现磁盘上所有的文件夹目录。其中,被删除的文件夹用99310之类的数字表示。

如要恢复某一文件夹中的某一文件,首先双击该文件夹,进入该文件夹之后选定要恢复的文件,然后选择FILE/SAVE,出现SAVE窗口,如果要恢复的文件放在硬盘上,则需在该窗口中的DRIVE中选A,即被恢复的文件将存放到软盘上。反之,如要恢复的文件是在软盘上,则DRIVE选项应选择C,最后点OK,被恢复的文件即被保存到另一磁盘上了。

REVIVAL的使用方法与WINDOWS95的资源管理器很相似。在目录上双击鼠标右键可改变目录名。双击文件名可执行该文件。在一文件名上按鼠标右键可用内置的文本或HEX阅览器看此文件。

另外要修复丢失或删除的文件,必须在EDIT菜单中的BASIC ROOT DIR、SEARCH ROOTDIR、GARBAGE DIR或TOTAL DIR中进行搜索,最后必须把文件保存到另一磁盘上。当你快速格式化硬盘时,文件分配表和根目录上的数据均要丢失。所以,使用REVIVAL不能修复根目录里的文件,只能修复子目录里的文件。这是因为子目录中的数据保存在磁盘的数据区内,REVIVAL扫描磁盘的数据区故能找到其中的数据。

REVIVAL支持FAT、FAT32及NTFS。FAT和FAT32之间的接口相同,而FAT和NTFS之间的接口却不同,因为它们的内部文件系统不一样。对于NTFS、REVIVAL不支持EDIT中的SEARCHROOT DIR、GARBAGE DIR和TOTAL DIR。对于FAT,REVIVAL不支持ALL FILES。需要该软件的朋友可从

SQL Server2023 数据库误删除数据的恢复方法分享

用Recovery for SQL Server进行恢复的操作步骤:

运行Recovery for SQL Server

点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(.mdf)

Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。

Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复汪滑的数据库的日志文件路径(log file path)。

Next 并选择目标文件夹(Destination folder),用启颤于存放恢复过程中生成的SQL语句与bat文件。

点击Start,开始恢复操作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。    

Next,选择被恢复数据存放的目标数据库。

Next, 选择 Import availiable data from both database and log files

 Next, Next, 然后就完悄陵败成数据的恢复!

SQL数据库表被误删除,如何恢复?

如果之前没有完全备份的话,我不知道怎么去恢复。

如果之前有完全备份的话,现在立刻备份日志文件。

backup

log

数据库名

to

disk

=’备份路径+备份名’

然后还原最近一次的完全戚棚备份(删除表之前的完全备份)加上norecovery选项

restore

database

数据库名

from

disk=’完全备份路径+备份名’

with

norecovery,replace

之后还则铅原刚才备份的日志文件,加上stopat选项,假设表是在18:01分删除的,就恢复到之前的几孙仔好分钟

restore

log

数据库名

from

disk=’日志文件备份路径+备份名’

with

stopat=’

17:30′

sql server 删除数据错误能还原吗

sql 表被轿仔drop,truncate 或者delete只要茄雀没有覆盖,均是可以恢复的,你可以参考:

sql drop table 恢复

sql delete 数据恢复

sql truncate table 恢闭纳汪复

一、在LOG文件完整的情况下,可以还原。但一般而言,是将数据库的返薯整个的状态还原到误删除数据之前。建议

备份

当前数据库。

二、给出SQL 2023下的具体做法,别的版本的SQL Server可参照操作。

最常用的就是日志尾部备份恢复法。以下环境2023R2,对于2023及其以上版本可以使用这个方法,其实2023也可以,2023很少用,没测试过。(SQL2023之前可以使用Log Exploer这个第三方工具。)

步骤:

(1)、检查数据库的恢复模式,如图:

或者使用脚本检查:

SELECT recovery_model,recovery_model_desc

FROM sys.databases

WHERE name =’AdventureWorks’

结果如下:

确保数据库的恢复模式最起码不能为【简单】。如果不是完整模式,请改为完整模式,改之前如数据被删,无法恢复。

(对于重要生产数据库环境,强烈建议使用【完整恢复模式】,虽然对于另外两种(大容量日志(BULK_LOGGED)、简单(SIMPLE))来说,完整恢复模式产生的日志会大,但是在出现问题的时候,就会觉得这些都不算什么了。)

 

(2)、要求曾经做过最少一次的完整备份。因为所有类型的备份都基于完整备份,如果没有最少一次完整备份,其他类型的备份都无效。所以在创建完一个新数据库之后,强烈建议做一次完整备份。

使用以下的语句粗略可以看到有那些数据库做过备份:

SELECT  database_name,recovery_model,name

FROM msdb.dbo.backupset

(3)、确保别人不再连接数据库,然后做一次日志尾部备份:

首先先创建一点数据:

/*

这里使用

微软

的示例数据库AdventureWorks做示例

*/

USE AdventureWorks

GO

IF OBJECT_ID(‘testRestore’) IS NOT NULL

   DROP TABLE testRestore

GO

CREATE TABLE testRestore

   (

     id INT IDENTITY(1, 1) ,

     NAME VARCHAR(50)

   );

–插入测试数据:  

INSERT INTO testRestore(Name)

SELECT ‘test1’

UNION ALL

SELECT ‘test2’

UNION ALL

SELECT ‘test3’

UNION ALL

SELECT ‘test4’

UNION ALL

SELECT ‘test5’

UNION ALL

SELECT ‘test6’

UNION ALL

SELECT ‘test7’

UNION ALL

SELECT ‘test8’

SELECT * FROM testRestore

检查一下结果:

然后做个删除操作,为了定位是啥时候发生的,我加了一个waitfor命令,让它在某个时间发生,这样恢复的时候就有准确性:

USE AdventureWorks

GO

WAITFOR TIME ’21:45′

DELETE FROM dbo.testRestore

现在来看看数据:

USE AdventureWorks

GO

SELECT * FROM dbo.testRestore

《〈〈〈〈〈漏余者〈〈〈〈下面是重点〉〉〉〉〉〉〉〉〉》

做一次日志备份,最重要是选择【备份日志尾部】

然后在【选项】页选择:除【事务日志】外,其他红框包裹的地方为强烈建议勾选的地方。并且保证数据库不要有别人在连接,因为备份日毁竖志尾部会使数据库处于还原状态,拒绝其他会话的连接,如果不断开其他连接,是备份不了的。

按确定,也可以使用上方的【脚本】来生成语句:

USE Master

GO

BACKUP LOG TO  DISK = N’E:\AdventureWorks.bak’ WITH  NO_TRUNCATE , NOFORMAT, NOINIT,  NAME = N’AdventureWorks-事务日志 备份’, SKIP, NOREWIND, NOUNLOAD,  NORECOVERY , COMPRESSION,  STATS = 10, CHECKSUM

GO

declare @backupSetId as int

select @backupSetId = position from msdb..backupset where database_name=N’AdventureWorks’ and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N’AdventureWorks’ )

if @backupSetId is null begin raiserror(N’验证失败。找不到数据库“AdventureWorks”的备份信息。’, 16, 1) end

RESTORE VERIFYON FROM  DISK = N’E:\AdventureWorks.bak’ WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND

GO

此时,数据库会处于【正在还原】的状态

如果发现备份不了可以用下面语句查看,并把spid杀掉:

SELECT  * FROM sys.sysprocesses WHERE dbid=DB_ID(‘AdventureWorks’)

执行结果如下图:

然后用kill语句杀掉。

接着继续备份,然后进行还原,如图,先要还原完整备份,选择最近的那次,只认最后一次备份,所以要选择最新的那次,否则还原不了。

又有一个注意事项,记得如下图选择:

接着还原日志文件,这是最最重要的一步:

然后:

(图中在22:20分删除数据的,只要把时间点指定到你误删除的时间之前即可)由于日志尾部备份都是最后一个备份文件,所以这里选则红框部分即可:

点确定,完成后再检查一下表,可以看到,数据已经还原成功。

 **************************************************************************

总结:

1、方法看上去有点繁琐,但是实际操作并不太难。

2、再次强调,先备份现场环境,无论故障影响有多严重,保全好当时情况。如果并不是重要生产数据,当别论。

3、步骤建议严格按照上面提示,对重要数据库实际操作前建议先在测试数据库中演练并理解后再正式操作。

额外提醒,此方法的缺点:

1、如果误操作以后还有很多人做了操作,还原后,连着别人的操作数据都会冲掉,所以发生误操作后,应考虑停止它人对数据库的操作。。

2、此方法要对数据库独占,操作过程中,它人无法使用与联接数据库。

SqlServer2023非正常删除(误删)LOG数据文件后数据库紧急修复方法,本文已一个实际例子来展示恢复过程,下文中涂改的部分均为内部让友盯内容坦和,涂改的数据库名均表示为returndate,各位在实际恢复时则使用现场实际数告码据库表命名即可。

SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:

1. 至少有一个误删除之前的数脊斗厅据库完全备份。

2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。

针对这两个前提条件,会有三种情况:

情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。

a) 备份当前数据库的事务日志:BACKUP LOG TO disk= N’备份文件名’ WITH NORECOVERY

b) 恢复一个误删除之前的完全备份:RESTORE DATABASE FROM DISK = N’完全备份文件名’ WITH NORECOVERY, REPLACE

c) 将数据库恢复至误删除之前的时间点:RESTORE LOG FROM DISK = N’之一步的日志备份文件名’ WITH STOPAT = N’误删除之前的时间点’ , RECOVERY

情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。

情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为樱隐“完整(Full)”

关于sql 恢复删除数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » SQL数据库误删除了数据怎么恢复? (sql 恢复删除数据)