SQL常见问题:如何利用日志还原SQL数据库?

数据|数据库|问题

用 Log Explorer 恢复,如果没有Log Explorer可以用日志文件进行时间点恢复,

将会失去此时间点之后的所有数据库改变

example:
首先对数据库进行日志备份

查询分析器里
1.use northwind
insert employees(lastname,firstname) values('aaa','bf')
记下这时的时间

2.过3分钟输入
use northwind
insert employees(lastname,firstname) values('bbb','cd')

3.此时select * from employees 将能看到这两条记录

4.进行日志备份,选中northwind数据库,所有任务,backup database
在对话框中,选择事务日志备份为备份类型,选择已有的备份设备,和追加到媒体
单击ok进行备份.这样生成了两个新纪录的日志备份

5.以下演示恢复
所有任务 restore database
对话框中选择时点还原,输入刚才记录的时间,单击ok恢复

6.执行select * from employees ,此时只能看到第一个新插入的记录

 

 

如何在数据库文件损坏(日志文件完好)情况下,进行恢复

数据库文件损坏的时候如何恢复
1 建一个测试数据库test(数据库类型为完全)
2 建一个表,插入点记录
create table a(c1 varchar(2))
go
insert into a values('aa')
go
insert into a values('bb')
go
3 作完全备份,到文件test_1.bak
4 在作一点修改
insert into a values('cc')
go
create table b(c1 int)
go
insert into b values(1)
go
insert into b values(2)
go
5 shutdown 数据库服务器
6 用ultraedit编辑数据库文件test_data.mdf,随便修改点字节内容
7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,而且显示置
疑。
8 运行isql -SLocalhost -Usa -P
1> backup log test TO DISK='D:\Program Files\Microsoft SQL
Server\MSSQL\BACKUP\t
est_2.bak' WITH NO_TRUNCATE
2>go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
BACKUP LOG 操作成功地处理了 2 页,花费了 0.111 秒(0.087 MB/秒)。

9 进行恢复最老的完全备份
1> RESTORE DATABASE test FROM DISK='D:\Program Files\Microsoft SQL
Server\MSSQL\
BACKUP\test_1.bak' WITH NORECOVERY
2> go
已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 97 页,花费了 0.107 秒(7.368 MB/秒)。

10 恢复最近的日志
1> RESTORE LOG test FROM DISK='D:\Program Files\Microsoft SQL
Server\MSSQL\BACKU
P\test_2.bak' WITH RECOVERY
2> go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE LOG 操作成功地处理了 2 页,花费了 0.056 秒(0.173 MB/秒)。

数据已经完全恢复了,可以使用了。
select * from a
go

select * from b
go
c1
----
aa
bb
cc

有老的备份的话

1 backup log db TO DISK='e:\db2.bak' WITH NO_TRUNCATE

2 恢复最老的完全备份
RESTORE DATABASE db FROM DISK='e:\db1.bak' WITH NORECOVERY

3 恢复最近的日志
RESTORE LOG db FROM DISK='e:\db2.bak' WITH RECOVERY

 

时间: 2024-09-30 13:36:05

SQL常见问题:如何利用日志还原SQL数据库?的相关文章

SQL Server通过重建方式还原master数据库_MsSql

SQL Server通过重建方式还原master数据库,具体内容如下 1.备份master数据库 2.停止服务,直接删除master数据文件 3.用安装程序重建master数据文件 控制台下进入安装目录就不说了 D:\SetUp\sqlserver2012>Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=sqlserver2012 /SQLSYSADMINACCOUNTS=UserName /SAPWD= *** 4.单用户模式启动SQL S

SQL Server通过重建方式还原master数据库

SQL Server通过重建方式还原master数据库,具体内容如下 1.备份master数据库 2.停止服务,直接删除master数据文件 3.用安装程序重建master数据文件 控制台下进入安装目录就不说了 D:\SetUp\sqlserver2012>Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=sqlserver2012 /SQLSYSADMINACCOUNTS=UserName /SAPWD= *** 4.单用户模式启动SQL S

SQL注入实战---利用“dbo”获得SQL管理权限和系统权限

作者:覆灭之魔 文章来源:影子鹰安全网络 刚刚开始学习SQL注入入侵,有写的不对和不好的地方希望各位师哥,师姐们多多指导. 在一个供求信息发布的网站上测试了一下,页面Http://www.xxx.com/new/new.asp?id=49 我做了如下测试:(1) Http://www.xxx.com/new/new.asp?id=49' Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14[Microsoft][ODBC Microsof

数据库-sql server 2005 事务日志删除问题

问题描述 sql server 2005 事务日志删除问题 sql server 2005 事务日志 删除对数据库有多大影响? 如何删除sql server 2005 事务日志 如何做到定期删除半年前的,保留半年的事务日志? 解决方案 如果你的数据库是full模式,那需要先做完整备份,再定期做日志备份,这样才能截断日志 如果数据库是simple模式,就不存在截断日志的问题

使用SQL Server 2008的事务日志传送功能备份数据库

一:系统要求 数据库服务器,名称Server-DW,Windows Server 2003 X64,安装SQL Server 2008,需要备份的数据库为"JKL_DW". 备份服务器,名称Server-ETL,Windows Server 2003 X32,安装SQL Server 2008. 二:准备工作 1.在Server-ETL上创建文件夹,用于存放备份数据库,此例中命名为"jklDW". 2.在Server-ETL上创建文件夹,用于存放为备份数据传送过来的

SQL Server 2008及更高版本数据库恢复方法之日志尾部备份_mssql2008

        经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了.人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题.         遇到这种情况,一般都是没有做备份,不然也不会来发问了.首先要冷静,否则会有更大的灾难.直到你放弃. 解决方法:        对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了.但是唯一

ASP视频教程:备份和还原SQL Server 2000数据库

大家在初学ASP程序的时候,我们经常第一个任务就是配置环境!在这里根据网页教学网站长的经验,有时克隆版的XP系统有时是安装不了IIS的!前面我们已经讲解了ASP视频教程:制作网站前台首页,本讲主要讲述备份和还原SQL Server 2000数据库.大家请看视频教程.

利用RDA实现SQL CE与桌面SQL Server数据库间的数据存取

本文介绍如何利用RDA(RemoteDataAccess远程数据存取)实现掌上电脑Pocket PC(简称PPC)上的SQL Server CE 2.0与桌面SQL Server 2000数据库间的数据存取.我们将采用Visual Basic .Net 2003进行智能设备端的程序开发. 概述 PPC程序与桌面PC进行通信的编程方式目前有两种,1.利用Socket编程与桌面程序进行通信:2.利用RDA和Replication(复制)进行数据库编程来完成与桌面SQL Server数据库的存取.利用

使用SQL Server日志转移实现数据库的高可用性

[导读]本文主要针对SQL Server 2000介绍如何使用SQL Server日志转移实现数据库的高可用性. 集群是一种实现高可用性的有效解决方案,有时它会适得其反.而且,它还非常昂贵.因此,数据库管理员可使用日志转移代替集群来提供较高的可用性. 日志转移是这样一种处理过程,它能将某一数据库中的事务日志文件依次转存到备份的数据库中,进而为这一数据库创建一个"近乎"热备份.SQL Server 2000的数据库引擎中设置了日志转移功能,并在其中进行处理.所以它会自动完成复原到备份服务