SQL Server误删表查看

转自:http://blog.51cto.com/aimax/2134572

 

SQL Server 完全恢复模式 下恢复误删除的表,进行 精准 恢复

1.  找出被删除的表名(无schema,需要从日志中分析进行提取,后续完善)、object_id、表所在数据库、删除人、删除时间等

  1. declare @database_name varchar(200),@type varchar(2),@pass_hours int,
  2. select @database_name='AdventureWorks2014',@pass_hours=-48
  3. declare @file_path sql_variant
  4. select @file_path=value from fn_trace_getinfo(0) where property=2 and traceid=1
  5. SELECT max(gt.HostName) as 'LoginHostName'
  6. ,max(gt.ApplicationName) as 'ApplicationName'
  7. ,max(gt.LoginName) as 'LoginName'
  8. ,min(gt.StartTime) as 'MinStartTime'
  9. ,max(gt.StartTime) as 'MaxStartTime'
  10. ,gt.ObjectID
  11. ,max(gt.ServerName) as 'DBServerName'
  12. ,max(gt.ObjectName) as 'ObjectName'
  13. ,max(gt.DatabaseName) as 'DatabaseName'
  14. ,max(sv.subclass_name) as 'subclass_name'
  15. ,max(e.name) as 'OperationType'
  16. FROM fn_trace_gettable(convert(varchar(2000),@file_path), DEFAULT) gt
  17. LEFT JOIN sys.trace_subclass_values sv
  18. ON gt.[eventclass] = sv.[trace_event_id] AND sv.[subclass_value] = gt.[objecttype]
  19. INNER JOIN sys.trace_events e
  20. ON gt.[eventclass] = e.[trace_event_id]
  21. INNER JOIN sys.trace_categories c
  22. ON e.[category_id] = c.[category_id]
  23. WHERE StartTime>=dateadd(HOUR,@pass_hours,getdate()) and StartTime<=getdate()
  24. and [eventclass]=47 --drop talbe/index
  25. and databasename=@database_name
  26. and subclass_name='U'
  27. group by gt.ObjectID
 

2. 通过删除时间确定相关信息被记录在哪个日志文件上

  1. select * from msdb.dbo.backupmediafamily where media_set_id=(
  2. select top 1 media_set_id from msdb.dbo.backupset
  3. where database_name=@database_name
  4. and backup_finish_date>=@max_start_time
  5. and type='L' order by backup_finish_date)
 

3. 从日志文件提取lsn相关信息

  1. declare @lockinfo varchar(100)
  2. set @lockinfo='%SCH_M OBJECT%:'+@ObjectID+':%'
  3. select [Transaction id],'lsn:0x'+[Current LSN]
  4. from fn_dump_dblog (
  5. NULL, NULL, N'DISK', 1, @backupfile,
  6. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  7. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  8. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  9. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  10. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  11. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  12. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  13. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  14. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT) as a
  15. where convert(datetime,[Begin Time])
  16. between dateadd(ss,-5,@min_start_time) and dateadd(ss,5,@max_start_time)
  17. and [Transaction Name]='DROPOBJ'
  18. and exists(select 1 from fn_dump_dblog (
  19. NULL, NULL, N'DISK', 1, @backupfile,
  20. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  21. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  22. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  23. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  24. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  25. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  26. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  27. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
  28. DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
  29. where [Transaction id]=a.[Transaction id] and [Lock Information] like @lockinfo)
 

4. 恢复所需相关信息

5. 邮件显示

6. 恢复语句(最后执行的一句)

Restore log DBName from disk='xxx' with stopbeforemark='xxx'

©著作权归作者所有:来自51CTO博客作者易语随风去的原创作品,如需转载,请注明出处,否则将追究法律责任

SQL Server误删表查看的更多相关文章

  1. SQL Server 用SSMS查看依赖关系有时候不准确,改用代码查

    SQL Server 用SSMS查看依赖关系有时候不准确,明明某个sp中有用到表tohen,查看表tohen的依赖关系的时候,却看不到这个sp 用代码查看方式如下: --依赖于表tohen的对象 SE ...

  2. 千万级SQL Server数据库表分区的实现

    千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的提升性能方法.本文将介绍SQL Server ...

  3. SQL Server 锁表、查询被锁表、解锁相关语句

    SQL Server 锁表.查询被锁表.解锁相关语句,供参考. --锁表(其它事务不能读.更新.删除) BEGIN TRAN SELECT * FROM <表名> WITH(TABLOCK ...

  4. SQL Server系统表sysobjects介绍与使用(转)

    SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可 ...

  5. SQL Server 创建表分区

    原文:SQL Server 创建表分区 先准备测试表 CREATE TABLE [dbo].[Employee] ( EmployeeNo ,) PRIMARY KEY, EmployeeName ) ...

  6. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  7. SQL Server系统表介绍与使用

    关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可 ...

  8. SQL Server创建表超出行最大限制解决方法

    问题的现象在创建表A的时候,出现“信息 511,级别 16,状态 1,第 5 行  无法创建大小为 的行,该值大于允许的最大值 8060.”的信息提示.很奇怪,网上查了一下,是因为要插入表的数据类型的 ...

  9. SQL Server 修改表结构(转载)

    SQL Server 修改表结构 本文链接:https://blog.csdn.net/petezh/article/details/81744374 查看指定表结构 exec sp_help Rep ...

随机推荐

  1. Linux下(centos6.8)JDK1.8的安装与配置

    今天说下在Linux(centos6.8)系统下的JDK安装与配置. 据我所知的jdk安装方式有三种(rpm.yum方式没用过,暂且不提)今天只说解压安装方式: 一.解压jdk安装包: 附上jdk1. ...

  2. sql语句单据编号生成防并发

    有用户反馈说发现重复单据号,检查发现以下单据号被分配给了不同的两个职工 系统中使用语句exec GetNewOrderNumber 'pwgnumber','PWG',1, @pwg_number o ...

  3. libevent源码学习_event结构体

    在libevent中最重要的结构体莫过于event和event_base了,下面对于这2个结构体进行分析. 1.结构体event,位于:event.h struct event { /* * 双向链表 ...

  4. redhat samba安装配置

    突然想要用,好久没配过这玩意了,再次配置一次,记录一下过程. 1.挂载镜像      mount -o loop ~/Desktop/RHEL_5.5\ i386\ DV.iso /mnt       ...

  5. Python开发qq批量登陆

    操作步骤: 1.打开qq软件 2.移动鼠标到qq输入处 3.在输入处,点击鼠标,输入帐号 4.模拟按下tab键,输入密码,模拟点回车登录 #coding=utf-8 import os import ...

  6. libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程

    看到网上有人讲解fedora 9下安装PF-RING的过程,都是几年前的了,比较老了,我安装PF-RING就是为了使用libpcap库,libpcap的原理是通过socket 将数据包从网卡 捕获数据 ...

  7. centos6.5下Nginx的安装

    此处主要介绍通过配置Nginx的官方yum源,通过yum安装Nginx.参考官网:http://nginx.org/en/linux_packages.html 主要分为以下步骤: 1.配置yum源: ...

  8. 一个基于 EasyUI 的前台架构(3)封装操作Tabs的JS代码

    一般来说,系统框架的主内容区会引入另一个独立的 Web 页面来实现系统的功能,所以在在 Tabs 里的每一个标签页里使用 iframe 标签来引入子页面.所以这里可以将 Tabs 的 Content ...

  9. jetty访问jsp页面出现异常:org.apache.jasper.JasperException: PWC6345: A full JDK (not just JRE) is required解决

    今天在jetty下配置一个jsp模版的报表页面,报如下异常信息:   org.apache.jasper.JasperException: PWC6345: There is an error in ...

  10. 报错:org.apache.jasper.JasperException: /jsp/head.jsp (line: 1, column: 2) Page directive: illegal to

    上面报错提示的是org.apache.jasper.JasperException: /jsp/head.jsp (line: 1, column: 2) Page directive: illega ...