sqlserver数据库表数据误删除了怎么恢复?
怎么恢复 sql中delete 删除的表
1:delete删除内容不删除定义,不释放空间
sqlserver数据库表数据误删除了怎么恢复?
sqlserver数据库表数据误删除了怎么恢复?
sqlserver数据库表数据误删除了怎么恢复?
delete
from
表名
where
条件
--按条件删除数据
delete
from
表名
--删除全部数据
2:删除内容、释放空间但不删除定义
truncate
table
表名
--清空数据,保留表结构
3:删除内容和定义,释放空间
drop
table
表名
--表结构包括数据一起删除
注:truncate
比delete速度快,且使用的系统和事务日志资源少。
sqlserver数据库表数据误删除了 怎么恢复
SQL 中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:
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)”。
我现在面临的是第二种情况,需要找第三方工具。
开始找的是Log Explorer for SQL ,不支持SQL 2008。
后来找的是SQL Log Rescue,也不支持SQL 2008。
接着找到的是SysTools SQL Recovery,支持SQL 2008,但需要购买,Demo版并没有数据恢复功能。
终在上找到Recovery for SQL ,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。幸的数据库文件不大,用它完成了误删除数据的恢复。
下面分享一下用Recovery for SQL 进行恢复的作步骤:
1. 运行Recovery for SQL
2. 点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(.mdf)
3. Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。
4. Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。
5. Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。
6. 点击Start,开始恢复作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Database Creation Utility 窗口。
7. Next,选择被恢复数据存放的目标数据库。
8. Next, 选择 Import ailiable data from both database and log files
9. Next, Next, 然后就完成数据的恢复!
sql 删除表中数据后怎么恢复
记下清除数据的时间,然后备份当前的日志.
backup
log
dbname
to
backupdev(就是备份设备的名字)
with
norecovery
然后恢复日志:
restore
log
dbname
from
backupdev
with
stopat=时间(清除表中数据之前的时间,注意时间格式)
SQL数据库里的表误删除要怎么恢复
如果之前没有完全备份的话,我不知道怎么去恢复。
如果之前有完全备份的话,现在立刻备份日志文件。
backup
log
数据库名
to
disk
='备份路径+备份名'
然后还原近一次的完全备份(删除表之前的完全备份)加上norecovery选项
restore
database
数据库名
from
disk='完全备份路径+备份名'
with
norecovery,replace
之后还原刚才备份的日志文件,加上stopat选项,设表是在18:01分删除的,就恢复到之前的几分钟
restore
log
数据库名
from
disk='日志文件备份路径+备份名'
with
stopat='2008-3-28
17:30'
怎么恢复 sql中delete 删除的表
一、如果是刚刚删除,那么有两方法:
首先用show parameter undo;命令查看当时的数据库参数undo_retention设置。
显示如下:
undo_mament string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
undo_retention(保持力),10800单位是秒。即3个小时。
修改默认的undo_retention参数设置:
ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;
方法1,通过oracle提供的回闪功能:
exec dbms_flashback.enable_at_time(to_date('2007-07-23 10:21:00','yyyy-mm-dd hh24:mi:ss'));
set serveroutput on
DECLARE r_temp hr.job_history%ROWTYPE;
CURSOR c_temp IS SELECT FROM hr.job_history;
BEGIN
OPEN c_temp;
dbms_flashback.disable;
LOOP
FETCH c_temp INTO r_temp;
EXIT WHEN c_temp%NOTFOUND;
insert into hr.job_history(EMPLOYEE_ID,_ID,START_DATE,END_DATE) values (r_temp.EMPLOYEE_ID,r_temp._ID,r_temp.START_DATE,r_temp.END_DATE);
commit;
END LOOP;
CLOSE c_temp;
END;
方法2,insert into hr.job_history
select from hr.job_history as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');
这种方法简单,容易掌握,功能和上面的一样时间为你误作之前的时间,是离误作比较近的,因为oracle保存在回滚保持段里的数据时间有一定的时间限制由undo_retention 这个参数值决定。
二、如果是删除一段时间了,但你有比较新的数据库备份,就通过备份来恢复。新建一个库,把备份还原上去,导出表数据,再导入到现在用的库中去。
三、如果删除一段时间了,并且无备份,但是数据在写入表的时候同时会写入其它一些关联表的话,那么就尝试通过写SQL语句从其它表取数据出来insert到被删除的表中。
mysql误删除一个表,可以恢复吗
1、首先构建测试环境数据create table t1(a varchar(10),b varchar(10));insert into t1 values('1','1');insert into t1 values('2','2');commit;。
2、模拟误修改,将t1表中的b字段更新为错误数据 "123456"update t1 set b='123456' where a='1';commit;select from t1;。
3、将恢复工具上传到并进行解压。unzip binlog2sql-.zip。
4、得到误修改时的binlog文件(show binary logs;),实验环境是mysql-bin.000011。
5、通过 binlog2sql.py 脚本的到所有 对表 t1 的修改作。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011'。
6、得到了误删除的sql的准确位置在1382-1615之间,使用 _-B_ 选项生成回滚sql。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011' --start-ition=1382 --stop-ition=1615 -B。
7、执行得到的回滚语句进行误作恢复。就完成了。
在sql里面把数据库删除了怎么恢复
不同的数据库有不同的恢复方式。
Oracle 11g之后有闪存回归机制,在一定的时间内可以从闪存中恢复数据。
MySQL数据库则在开启了binlog日志的情况下,可以通过binlog日志恢复被删除的数据。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。