保藏本站 保藏本站
真钱棋牌网主页 - 软件测验 - 常用手册 - 站长东西 - 技能社区
主页 > 数据库 > mssql2008 > 正文

主页 - PHP - 数据库 - 操作体系 - 游戏开发 - JS - Android - MySql - Redis - MongoDB - Win8 - Shell编程 - DOS指令 - jQuery - CSS款式 - Python - Perl

Access - Oracle - DB2 - SQLServer - MsSql2008 - MsSql2005 - Sqlite - PostgreSQL - node.js - extjs - JavaScript vbs - Powershell - Ruby

SQL Server 2008及更高版别数据库康复办法之日志尾部备份

常常看到有人误删数据,或许误操作,特别是update和delete的时分没有加where,然后就喊爹喊娘了。人非圣贤孰能无过,做错能够了解,但不能怂恿,这个今后再说,现在先来处理问题。

遇到这种状况,一般都是没有做备份,不然也不会来发问了。首要要镇定,不然会有更大的灾祸。直到你抛弃。

处理办法:

关于这类问题,主要是找回误操作之前的数据,在2008之前,有个很知名的东西Log Exploer,传闻还挺好用的,这个网上大把教程,这儿就不多说了。可是仅有惋惜的是,不支持2008及更高版别,这时除了其他第三方东西,那么最常用的便是本文说到的办法——日志尾部备份。本文试验环境2008R2,关于2008及其以上版别能够运用这个办法,其实2005也能够,2000很少用,没试过,仅仅2008之前能够运用Log Exploer,所以就没必要用这种办法。

下面图文并茂解说操作办法,至于原理,不属于本文规模,而且我信任真遇到误操作的时分,估量没人会看原理了。

进程:

(1)、检查数据库的康复形式,如图:

检查图片

检查图片

或许运用脚本检查:

SELECT recovery_model,recovery_model_desc 
FROM sys.databases 
WHERE name ='

成果如下:

检查图片

确保数据库的康复形式最起码不能为【简略】。至于怎样修改成完好形式,我觉得这些应该没必要多说了。

牢记,关于任何重要环境,不仅仅是客户正式环境(俗称出产环境),都强烈主张运用【完好康复形式】,尽管关于别的两种(大容量日志(BULK_LOGGED)、简略(SIMPLE))来说,完好康复形式发作的日志会大,可是在呈现问题的时分,就会觉得这些都不算什么了。而且我也想不到任何理由关于正式环境不运用完好康复形式。只需办理妥当,完好康复形式的日志也不会太反常。

(2)、这儿其实隐含别的一步,从前做过最少一次的完好备份。由于一切类型的备份都根据完好备份,假如没有最少一次完好备份,其他类型的备份都是剩余的,所以在这儿着重一下,在创立完一个新数据库之后,强烈主张乃至强制做一次完好备份。

SELECT database_name,recovery_model,name 
FROM ms

运用上面的句子大略能够看到有那些数据库做过备份,由于测验,所以做了几回备份,能够看到我这个时刻点现已做了备份了。

检查图片

(3)、确保他人不再衔接数据库,然后做一次日志尾部备份:

首要先创立一点数据:

由于tempdb永远为简略康复形式,所以不适合做事例。
这儿运用微软的示例数据库AdventureWorks

*/ 
USE AdventureWorks 
GO 
IF OBJECT_ID('testRestore') IS NOT NULL 
 DROP TABLE testRestore 
GO 
CREATE TABLE testRestore 
 ( 
  id INT IDENTITY(1, 1) , 
  NAME VARCHAR(50) 
 ); 
--刺进测验数据:  
INSERT INTO testRestore(Name) 
SELECT 'test1' 
UNION ALL 
SELECT 'test2' 
UNION ALL 
SELECT 'test3' 
UNION ALL 
SELECT 'test4' 
UNION ALL 
SELECT 'test5' 
UNION ALL 
SELECT 'test6' 
UNION ALL 
SELECT 'test7' 
UNION ALL 
SELECT 'test8' 
SELECT * FROM testRestore 

检查一下成果:

检查图片

然后来做个删去操作,为了定位是啥时分发作的,我加了一个waitfor指令,让它在某个时刻发作,这样康复的时分就有准确性:

USE AdventureWorks 
GO 
WAITFOR TIME '21:45' 
DELETE FROM dbo.testRestore 

现在来看看数据:

USE AdventureWorks 
GO 
SELECT * FROM dbo.testRestore 

检查图片

到这一步,灾祸呈现了,可是牢记要镇定。

下面便是本文的要点开端,做一次日志备份,最重要是挑选【备份日志尾部】

检查图片

然后在【选项】页挑选:除【业务日志】除,其他红框包裹的当地为强烈主张勾选的当地。而且确保数据库不要有他人在衔接,由于备份日志尾部会使数据库处于复原状况,回绝其他会话的衔接,假如不断开其他衔接,是备份不了的。

检查图片

然后按确认,当然,能够运用上方的【脚本】来生成句子:

USE Master 
GO 
BACKUP LOG [AdventureWorks] TO DISK = N'E:AdventureWorks.bak' WITH NO_TRUNCATE , NOFORMAT, NOINIT, NAME = N'AdventureWorks-业务日志 备份', SKIP, NOREWIND, NOUNLOAD, NORECOVERY , COMPRESSION, STATS = 10, CHECKSUM 
GO 
declare @backupSetId as int 
select @backupSetId = position from msdb..backupset where database_name=N'AdventureWorks' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'AdventureWorks' ) 
if @backupSetId is null begin raiserror(N'验证失利。找不到数据库“AdventureWorks”的备份信息。', 16, 1) end 
RESTORE VERIFYONLY FROM DISK = N'E:AdventureWorks.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND 
GO 


此刻,数据库会处于【正在复原】的状况


检查图片


假如发现备份不了能够用下面句子检查,并把spid杀掉:

SELECT * FROM sys.sysprocesses WHERE dbid=DB_ID('AdventureWorks')

履行成果:

检查图片

然后kill掉。

接着持续备份。

然后进行复原,如图:

先要复原完好备份,挑选最近的那次,由于日志备份的特性(今后其他文章再说),只认最终一次备份,所以要挑选最新的那次,不然复原不了。

检查图片

这儿又有一个注意事项,记住挑选:

检查图片

接着复原日志文件,这是最最重要的一步:

检查图片

然后:

检查图片

由于试验的时分出了点问题,后边重做了,所以时刻挑选到22:19分,我是在22:20分删去数据的。这儿不必太介意,只需把时刻点指定到你误删去的时刻之前即可。而由于日志尾部备份都是最终一个备份文件,所以这儿选则红框部分即可:

检查图片

现在再检查一下:

检查图片

能够看到,数据现已复原成功。

总结:

平常不做备份,出问题来喊急,这是苟有自取,还有一些脑袋发热的人喜爱看到ldf很大就直接删去,那今后出问题就别怪微软了。

本文中的办法看上去有点繁琐,可是实操几回就觉得好了,可是进程主张严厉依照上面说的,由于一旦操作过错,就很费事,此刻再次着重——镇定镇定再镇定!!!!!!

这种办法有几个缺陷:

1、假如你发现误操作今后还有很多人做了操作,那么你复原成功后,他人的操作就会冲掉,所以发作误操作后,要立刻中止他人对数据库的操作。

2、 这个办法要对数据库独占,所以你想悄悄康复是不可的了。英勇承认过错吧。

关于中心数据表,仍是要先做好防备操作,能够看:SQLServer康复表级数据。

以上便是本文的全部内容,期望对我们的学习有所协助。

SQL Server 2008 R2装置装备办法图文教程
MicrosoftSQLServer2008R2装置图解东西:SQLServer2008R2装置光盘或镜像ISO装置的预备进程:刺进2008R2装置光盘或加载镜像ISO文件,进入SQLServer装置中心后越过计

图文详解SQL Server 2008 R2装置装备办法
装置sqlserver2008R2的办法,轻松简略易操作,依照操作一步一步来。东西:sqlserver2008R2装置包一个(从网上下载)办法/进程:装置包解压解压后,翻开setu

一个简略的后台与数据库交互的登录与注册[sql注入处理、以及MD5加密]
一、东西:vs2013[由于我现在用的也是2013,版别随意你自己高兴]sql2008[预备过久晋级]二、用到的言语HTML+CSS+Jquery+Ajax+sqlserverHTML[相当于一个人]css[要穿衣

本周排行

更新排行

强悍的草根IT技能社区,这儿应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 ystekkfj.com. All Rights Rreserved  京ICP备05050695号