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. php 实现 html转js

    [php] <?php function htmltojs($str){ $re=''; $str=str_replace('\','\\',$str); $str=str_replace(&q ...

  2. usb转串口模块下载时遇到的问题

    ch340g usb转TTL模块,烧写wifi模块ESP8266固件时,为图省事,我直接用的该模块的3.3v电为wifi模块供的电,结果刚一上电就出现串口模块消失(听到噔的一声),电脑设备管理器里就看 ...

  3. JQuery实现ajax跨域

    AJAX 的出现使得网页可以通过在后台与服务器进行少量数据交换,实现网页的局部刷新.但是出于安全的考虑,ajax不允许跨域通信.如果尝试从不同的域请求数据,就会出现错误.如果能控制数据驻留的远程服务器 ...

  4. java设计模式 -------- 创建模式 之 抽象工厂模式

    本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 工厂方法模式和抽象工厂模式不好区分清楚: 工厂方法模式特点: 1. 一个抽象产品 ...

  5. C++语言基础(11)-多态

    一.产生背景 先看下面的例子: #include <iostream> using namespace std; //基类People class People{ public: Peop ...

  6. python简单C/S模式示例

    服务器端代码: #!/usr/bin/python import time, socket, threading # thread handle function def tcplink(sock, ...

  7. FMDB使用(转载)

    来自会员pengtao的分享:(原文:https://github.com/ccgus/fmdb) 由于FMDB是建立在SQLite的之上的,所以你至少也该把这篇文章从头到尾读一遍.与此同时,把SQL ...

  8. samba实现文件共享

    很多时候,做嵌入式开发,都是在windows上安装虚拟,在虚拟机中安装Linux操作系统.这个时候,我们经常需要Linux操作系统下有一个目录能在windows下自由访问.要想实现这个功能我们只需要在 ...

  9. Irrelevant Elements UVA - 1635 二项式定理+组合数公式+素数筛+唯一分解定理

    /** 题目:Irrelevant Elements UVA - 1635 链接:https://vjudge.net/problem/UVA-1635 题意:給定n,m;題意抽象成(a+b)^(n- ...

  10. Databinding在自定义ViewGroup中如何绑定view

    首先我们在平时开发中使用databinding的时候大部分都是在Activity或者fragment中,但我们一旦在自定义ViewGroup中使用的时候就会出现问题 问题描述: 我们在自定义Linea ...