如何通过日志恢复SQL Server数据

  这段时间看了关于在SQL server 中通过日志和时间点来恢复数据。也看了一些网上的例子,看如何通过日志来恢复数据。

  前提条件:

  数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项

  如果是简单模式: 类似下面的语句操作数据就不会记录到日志中: select * into t from [表名]

  这时为保证数据的完整要将数据库的恢复模式改成“完整”

  测试环境:

  1,建立数据库和测试表

  create database zp

  create table [zping. com](

  id int,

  name varchar(20)

  )

  插入测试数据:

  insert into [zping.com](id,name)

  values(1,zping.com1)

  insert into [zping.com](id,name)

  values(2,zping.com2)

  insert into [zping.com](id,name)

  values(3,zping.com3)

  insert into [zping.com](id,name)

  values(4,zping.com4)

  备份数据库,可以通过sql server的可视化操作,下面是生成的代码:

  BACKUP DATABASE [zp] TO DISK = NC:k.bak WITH NOFORMAT, NOINIT,

  NAME = Nzp-完整 数据库 备份, SKIP, NOREWIND, NOUNLOAD, STATS = 10

  GO

  查看数据:


  注意:这时我们做一个完整备份

  这时可能一不小心删除了一些数据。我们模拟一下:(假定删除了1,2的数据)

  delete from [zping.com] where (id=1 or id =2)

  注意:要记住大体的删除时间

  这时发现删除错误了,怎么把数据找回来啊。方法有两个:

  1,通过Log Explorer 查找进行恢复数据(我网站有此工具)

  2,另一种方法通过恢复日志(指定时间点恢复)来恢复数据。

  说明:第一个方法可以在线操作。

  第二个方法必须停止数据库或者再另一个数据库恢复(前提是必须有一个完全备份和日志备份)

  这里我们来讨论第二中方法指定时间点恢复:

  1、这时对数据库事务日志做备份(注意,如果没做个数据库完整备份,是不能做事务日志备份的)

  这时新建一个数据库zp(将以前的数据库改名),恢复数据库


  这时我们看到,有两个还原的数据库备份,因为我对zp数据库备份了两次,两次的备份的数据文件都一样。这里我们选择最近时间的备份

  默认在数据库的设置如下:是追加到备份集里,所以会有两个备份,如下图:


  同时,在”选项“里设置”不回滚“事务,

  注意:通过事务日志还原数据库,必须选择"不回滚"事务

  确定后:出现下面情况:


  这时发现,数据库一直是”正在还原“,这时还原数据库事务日志,

  1,“常规”里选择时间,(刚删除的时间)

  2,“选项”里将恢复状态设置为”回滚未提交“事务


  确定后,查询数据库,发现数据回来了。

  总结:

  1, 这是一般大型网站数据安全的一个办法,因为数据库比较大(可能有几百G)数据,为保证数据安全,大多采用完整备份+事务日志备份来保证数据安全。

  2,如SQL server 2005里的镜像就是采用的这种事务日志同步的方法保证数据的同步。

  3,如果恢复的日志数据出现”LSN“太早和太晚"说明了事务日志间的不连续。这时要注意备份的时间和顺序。

时间: 2024-12-31 02:28:46

如何通过日志恢复SQL Server数据的相关文章

恢复SQL Server被误删除的数据(再扩展)

原文:恢复SQL Server被误删除的数据(再扩展) 恢复SQL Server被误删除的数据(再扩展)   大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的恢复 这个是一个缺陷,本人决定对这个存储过程扩展一下,支持对log backup文件里的delete语句进行恢复   实验步骤   1.首先先准备好测试表和测试语句 USE [sss] GO --建表 CREATE TABLE testdelete

恢复sql server 2000误删数据的解决办法_MsSql

今天不小心把客户那边的数据库中删了一千多条数据,而且之前又没有备份,真的是很郁闷,后来在网上找到一工具,用起来挺方便,让我躲过一劫. 首先来看一下界面: 输入服务器地址,用户名及密码后点Connect,进入到下面的界面: 在这里选择要恢复数据的数据库,选择Use On-line Log(如果你又备份文件的话就不需要用这个工具了,直接用SQL搞定了).然后点Attach,进入下面的界面: 可以看到左边菜单中有很多功能,我们要恢复数据,首先要查看日志,找出我们误操作的那些日志记录,点Browse下的

恢复sql server 2000误删数据的解决办法

今天不小心把客户那边的数据库中删了一千多条数据,而且之前又没有备份,真的是很郁闷,后来在网上找到一工具,用起来挺方便,让我躲过一劫. 首先来看一下界面: 输入服务器地址,用户名及密码后点Connect,进入到下面的界面: 在这里选择要恢复数据的数据库,选择Use On-line Log(如果你又备份文件的话就不需要用这个工具了,直接用SQL搞定了).然后点Attach,进入下面的界面: 可以看到左边菜单中有很多功能,我们要恢复数据,首先要查看日志,找出我们误操作的那些日志记录,点Browse下的

如何通过备份文件恢复SQL Server数据库

阿里云关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于飞天分布式系统和高性能存储,RDS 支持 MySQL.SQL Server.PostgreSQL 和 PPAS( Postgre Plus Advanced server,一种高度兼容 Oracle 的数据库)引擎,并且提供了容灾.备份.恢复.监控.迁移等方面的全套解决方案,彻底解决数据库运维的烦恼. 应用场景 假如您用了阿里云的SQL Server RDS,

通过sqlserver日志恢复误删除的数据

原文:通过sqlserver日志恢复误删除的数据       如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题迎刃而解.     我遇到的情况是这样的,网站被植入木马,盗取了我的web.config文件,web.config文件里面的数据库连接字符串没有加密,而我的数据库远程连接又没有做IP限制,黑客通过数据库客户端连上我的数据库后,将所有的表都Delete掉了,所以大家一定要有一个好习惯将数据库连接字符串加密或者对远程访问数据库的IP作

ASP.NET备份恢复Sql Server数据库

本文将向大家介绍如何使用 ASP.NET 备份恢复 Sql Server 数据库,大家可以做个参考,也希望对大家有所帮助. 备份SqlServer数据库: string SqlStr1 = "Server=(local);database='" + this.DropDownList1.SelectedValue + "';Uid=sa;Pwd=";string SqlStr2 = "backup database " + this.DropDo

SQL Server数据表字段自定义自增数据格式的方法_MsSql

本文实例讲述了SQL Server数据表字段自定义自增数据格式的方法.分享给大家供大家参考,具体如下: --修改数据表SYS_Company中字段CompanyId自定义自增约束 ALTER TABLE [dbo].[SYS_Company] Add Constraint DF_SYS_Company_CompanyId DEFAULT ([dbo].[f_PrimaryCode_SYS_Company]()) FOR [CompanyId] --Go --删除约束 Alter table SY

ASP实现备份sql server数据

server|sql|备份|数据 建个bak文件夹啊,放数据! db.asp代码如下: <%dim conndim connstr'on error resume nextset conn=server.CreateObject("adodb.connection")connstr="Provider=SQLOLEDB;data source=192.168.2.1;UID=sa;Pwd=123;DataBase=test"conn.Open connstr

使用SQL Server数据服务开发功能强大且可扩展的应用程序

本文使用了以下技术: SQL Server 本文将介绍以下内容: SSDS 数据模型 管理实体.容器和颁发机构 创建示例 Web 应用程序 类序列化和反序列化 本专栏基于 SQL Server 数据服务的预发布版本撰写而成.文中包含的所有信息均有可能发生变更. 目录 SSDS 数据模型 构建分类广告系统 添加城市 添加类别 更新和删除实体 添加和删除列表架构 分类 Web 应用程序 类反序列化 使用自定义列表架构