代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
MSSQL
】
误删除数据库 用工具或sql事物恢复
作者:
dezai
/ 发布于
2014/6/23
/
1036
--************************************************************************* --************************************************************************* SQL事务日志还原实例 USE master GO -- 创建测试数据库 CREATEDATABASE db_test GO -- 对数据库进行备份 BACKUPDATABASE db_test TODISK='c:/db_test.bak' WITH FORMAT GO -- 创建测试表 CREATETABLE db_test.dbo.tb_test( ID int) -- 延时 1 秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败) WAITFOR DELAY '00:00:01' GO -- 假设我们现在误操作删除了 db_test.dbo.tb_test 这个表 DROPTABLE db_test.dbo.tb_test GO --在删除操作后,发现不应该删除表 db_test.dbo.tb_test --下面演示了如何恢复这个误删除的表 db_test.dbo.tb_test --首先,备份事务日志(使用事务日志才能还原到指定的时间点) BACKUPLOG db_test TODISK='c:/db_test_log.bak' WITH FORMAT GO -- 获取可尝试的时间范围 IFOBJECT_ID(N'tempdb..#') ISNOTNULL DROPTABLE # CREATETABLE #( BackupName nvarchar(128) , BackupDescription nvarchar(255) , BackupType smallint , ExpirationDate datetime , Compressed tinyint , Position smallint , DeviceType tinyint , UserName nvarchar(128) , ServerName nvarchar(128) , DatabaseName nvarchar(128) , DatabaseVersion int , DatabaseCreationDate datetime , BackupSize numeric(20,0) , FirstLSN numeric(25,0) , LastLSN numeric(25,0) , CheckpointLSN numeric(25,0) , DatabaseBackupLSN numeric(25,0) , BackupStartDate datetime , BackupFinishDate datetime , SortOrder smallint , CodePage smallint , UnicodeLocaleId int , UnicodeComparisonStyle int , CompatibilityLevel tinyint , SoftwareVendorId int , SoftwareVersionMajor int , SoftwareVersionMinor int , SoftwareVersionBuild int , MachineName nvarchar(128) , Flags int , BindingID uniqueidentifier , RecoveryForkID uniqueidentifier , Collation nvarchar(128) , FamilyGUID uniqueidentifier , HasBulkLoggedData bit , IsSnapshot bit , IsReadOnly bit , IsSingleUser bit , HasBackupChecksums bit , IsDamaged bit , BeginsLogChain bit , HasIncompleteMetaData bit , IsForceOffline bit , IsCopyOnly bit , FirstRecoveryForkID uniqueidentifier , ForkPointLSN numeric(25,0) NULL, RecoveryModel nvarchar(60) , DifferentialBaseLSN numeric(25,0) NULL, DifferentialBaseGUID uniqueidentifier , BackupTypeDescription nvarchar(60) , BackupSetGUID uniqueidentifierNULL ) INSERT # EXEC(N' RESTORE HEADERONLY FROM DISK = ''c:/db_test.bak'' WITH FILE = 1 RESTORE HEADERONLY FROM DISK = ''c:/db_test_log.bak'' WITH FILE = 1 ') --SELECT -- * --FROM # -- 定义尝试的时间范围,以及尝试时间点的间隔 DECLARE @start_datedatetime, @stop_datedatetime, @try_step_millsecondint, @msgnvarchar(1000) SELECT @start_date=MIN(BackupFinishDate), -- 尝试查找误删除数据的开始时间 @stop_date=MAX(BackupFinishDate), -- 尝试查找误删除数据的结束时间 @try_step_millsecond=500 -- 每 500 毫秒为一个时间点找一次数据 FROM # -- 还原完全备份 RESTOREDATABASE db_test FROMDISK='c:/db_test.bak' WITHREPLACE, NORECOVERY -- 还原日志备份到各点,以寻找出所需数据 WHILE@start_date<@stop_date BEGIN SELECT @start_date=DATEADD(ms, @try_step_millsecond, @start_date), @msg= N'尝试时间点: '+CONVERT(varchar(50), @start_date, 121) RAISERROR(@msg, 10, 1) WITH NOWAIT BEGIN TRY -- 还原日志到指定的点,并通过 STANDBY 使数据库能只读访问 RESTORELOG db_test FROMDISK='c:/db_test_log.bak' WITH STOPAT =@start_date, STANDBY ='c:/db_test_redo.bak' -- 检查需要的数据是否存在 IFOBJECT_ID(N'db_test.dbo.tb_test') ISNOTNULL BEGIN -- 显示还原的时间点 SELECT Restoreto =@start_date -- 完成数据库还原,使数据库可读写 RESTORELOG db_test WITH RECOVERY SELECT @start_date=@stop_date END END TRY BEGIN CATCH END CATCH END GO --最后删除测试环境 DROPDATABASE db_test DROPTABLE #
试试其它关键字
误删除数据库
事物恢复
数据库
恢复
同语言下
.
SQL查询 多列合并成一行用逗号隔开
.
查看存储过程修改时间,最近执行时间
.
设置手动批量删除数据库相关进程
.
获取某个表中特定字段的所有字符串形式
.
SQL 如何去除重复的字符串
.
怎么去掉一个字段中的重复数据
.
String 去除空格 回车 换行 水平制表符
.
SQL查询和替换含有回车,空格,TAB
.
SQL SERVER 查询每日新增用户数量、次留数量
.
判断两个字符串是否存在相同的内容
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
dezai
贡献的其它代码
(
1065
)
.
双色球
.
列出所有物理网络适配器
.
快乐数的 Python 实现
.
计算当月还剩天数
.
猜属相
.
二十四小时时钟
.
每日一语
.
很酷的日历
.
超长日历表单
.
最简单的时钟
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3