truncate table tb1;
事务日志恢复误删数据
原创
©著作权归作者所有:来自51CTO博客作者ccnahao的原创作品,请联系作者获取转载授权,否则将追究法律责任
--收缩数据库
backup log db1 with no_log
dbcc shrinkdatabase(N'db1',10,truncateonly);
--数据库事务日志还原详细步骤,
/*
首先有一个完整备份,必须是数据产生变化之前的,
等发现误操作数据,异常之后,不要着急,先做一
事务日志备份,然后在把 .bak 和 .trn 按顺序还原
注意的是 .bak 一定要 with norecovery 就是保持
还原状态,.trn 也是,只有你最后一个 .trn 的时候
才可以 with recovery 挂在数据库。
*/
--第一步 创建数据库
create database db1
Go
use db1
go
--第二步 创建表
create table tb1(
id int identity(1,1) not null,
fname nvarchar(32) not null,
cdate datetime not null default getdate(),
primary key (id asc)
)
Go
--第三步 插入数据
insert into tb1 (fname) select replace(newid(),'-','') from tb1;
--第四步 完整备份
BACKUP DATABASE [db1] TO DISK = N'D:\db1_backup_01.bak'
WITH NOFORMAT, NOINIT, NAME = N'db1_backup_01', SKIP, REWIND, NOUNLOAD, STATS = 10
--记录一个时间点
select getdate()
2011-09-07 15:48:21.840
--更新数据
update tb1 set fname = 'aoaoao';
--第五步 事务日志备份
BACKUP LOG [db1] TO DISK = N'D:\\db1_backup_01.trn'
WITH NOFORMAT, NOINIT, NAME = N'db1_backup_01', SKIP, REWIND, NOUNLOAD, STATS = 10
--记录一个时间点
select getdate()
2011-09-07 15:48:45.387
insert into tb1 (fname) select replace(newid(),'-','') from tb1;
--记录一个时间点
select getdate()
2011-09-07 15:49:25.420
--更新数据
update tb1 set fname = 'BIAIBAIBA';
--发现误更新了,本来想有条件的更新,结果全部更新了
--第六步 事务日志备份
BACKUP LOG [db1] TO DISK = N'D:\\db1_backup_02.trn'
WITH NOFORMAT, NOINIT, NAME = N'db1_backup_02', SKIP, REWIND, NOUNLOAD, STATS = 10
--还原数据库
RESTORE FILELISTONLY
FROM DISK = 'D:\\db1_backup_01.bak'
--第七步 还原数据库 db2 另外起名字
restore database db2 from disk='D:\\db1_backup_01.bak'
with norecovery,
move 'db1' to 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\db2.mdf',
move 'db1_log' to 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\db2_log.LDF'
go
--还原日志
RESTORE FILELISTONLY
FROM DISK = 'D:\\db1_backup_01.trn'
--001 中间日志 注意参数 with norecovery
restore database db2 from disk='D:\\db1_backup_01.trn' with norecovery
--002 最后日志 注意参数 with recovery
restore database db2 from disk='D:\\db1_backup_02.trn' with recovery, stopat='2011-09-07 15:49:25.420'
--查看数据,没问题
select * from tb1
select * from db2.dbo.tb1
update A set A.fname = B.fname
from tb1 A,db2.dbo.tb1 B
where A.id = B.id
--到此为止已经OK了
---哈哈哈
下一篇:WEB负NLB
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【Netapp数据恢复】Netapp存储lun被误删除的数据恢复案例
某单位一台Netapp存储,该Netapp存储内共有数十块SAS硬盘。工作人员误操作删除了Netapp存储中12个lun,删除的数据包括客户信息和其他重要数据。
数据恢复 netapp数据恢复 存储数据恢复 服务器数据恢复 -
TiDB误删数据恢复
数据是一种常见但令人头疼的问题。作为数据库管理员,DBA 承担着维护数据库完整性和安全性的...
tidb update delete truncate dba