MSSQL 2012 日志还原

日志还原条件

--条件一:检查数据库的恢复模式:Full
--条件二:有最后一次的完整备份
--条件三:完整备份后未强制截断日志
--条件四:故障发生后做过日志备份

CREATE TABLE [dbo].[tb](
    [姓名] [varchar](10) NULL,
    [课程] [varchar](10) NULL,
    [分数] [int] NULL
) ON [PRIMARY]

Insert into tb (姓名,课程, 分数 ) values (‘张三1‘, ‘语文‘, 80),(‘张三‘, ‘语文‘, 80),(‘张三2‘, ‘数学‘, 90),(‘张三3‘, ‘英语‘, 70)

---完整备份:

Use master
GO
Backup Database Test
    To Disk=‘D:\Backup\TEST_FullDB_20141103.bak‘
    With  init

---模拟故障时间,记录前后时间
Use Test
GO
Select GETDATE () --2014-11-03 21:39:30.323
UPdate tb
SET 分数 = 150   --120
Select GETDATE () -- 2014-11-03 21:39:30.323

 

---故障后未强制截断日志备份
Backup Log Test
    To Disk=‘D:\Backup\TEST_Log_20141103_2.trn‘
    With  No_Truncate, init

--- 还原到另一个数据库. NORECOVERY 模式(因测试环境只一个数据库实例,故路径要写明)
USE [master]
RESTORE DATABASE [TEST_New]
FROM  DISK = N‘D:\Backup\TEST_FullDB_20141103.bak‘
WITH FILE = 1,
MOVE N‘Test‘ TO N‘D:\Backup\Test.ndf‘,  
MOVE N‘Test_log‘ TO N‘D:\Backup\Test.ldf‘,  
NORECOVERY

----日志还原反复执行直到真正的时间点,使用STANDBY的目的是担心时间点选择不够准确,

还可以继续恢复日志备份
USE [master]
RESTORE LOG [TEST_New]
    FROM  DISK =N‘D:\Backup\TEST_Log_20141103_2.trn‘
    WITH  FILE = 1,  
    STANDBY = N‘D:\Backup\ROLLBACK_UNDO_TEST_New.BAK‘,  
    STOPAT = N‘ 2014-11-03 21:39:30.323‘

-----查看结果
Use TEST_New
-- Use TEST
Select * From dbo.tb (nolock)
-- 2014-11-03 21:32:19.070

---最后更新....

时间: 2024-08-04 16:02:17

MSSQL 2012 日志还原的相关文章

MSSQL在线文件还原脚本

在线文件还原:如果比较大的MSSQL数据库的损坏只是集中在其中某一个文件或者文件组上,使用在线文件还原技术,只是把坏掉的数据文件或者文件组重建,能节约很多时间.以下是测试脚本(假设损坏的文件时Trn01): --首先还原损坏的文件Trn01(执行这一步之前,你必须取得数据库的独占访问权): RESTORE DATABASE [AdventureWorks] FILE=N'Trn01' FROM DISK=N'D:\BACKUP_TEST\AD_FULL.BAK' WITH NORECOVERY,

mssql server 2005还原数据库bak文件与“备份集中的数据库备份与现有的xx数据库不同”解决方法

mssql server 2005还原数据库bak文件,网站使用虚拟主机建站会经常遇到,一般情况下,主机商有在线的管理程序,但有时候没有的话,就需要本地还原备份sql数据库了.这种情况mssql server 2008也同样会出现,有时候会出现“备份集中的数据库备份与现有的xx数据库不同”的错误提示,本文也一并把解决方法说道说道. 第一部分,mssql server 2005(2008)还原数据库bak文件. 一.连接上数据库,右键数据库,选择新建数据库,输入你要还原数据库的名称. 二.确定后右

MSSQL 2012 拒绝了对对象 'extended_properties' (数据库 'mssqlsystemresource',架构 'sys')的 SELECT 权限

查看数据库的表的时候报如下错误: MSSQL 2012 拒绝了对对象 'extended_properties' (数据库 'mssqlsystemresource',架构 'sys')的 SELECT 权限. (Microsoft SQL Server,错误: 229) 解决方法: 在数据库里相应的用户权限中,把db_denydatareader的复选框的勾去掉.db_denydatareader是拒绝访问. MSSQL 2012 拒绝了对对象 'extended_properties' (数

事务日志还原的次意外的操作失误

前几天新发布的一套程序发生了一次意外的操作失误,程序员修改某个表的指定范围的指定字段的时候,误操作导致更新操作没有执行where,直接引起该表指定字段全部变为更新字段,为了解决这个问题,特意使用了事务日志的还原,觉得有必要写一个流程这样以后新程序员遇到问题的时候不至于手忙脚乱,下面就将具体流程写出来大家看一下,初学者看看就行了. 1.首先更新前的数据表 可以看到第二个字段基本上为null. 2.更新及更新后的情况 更新后由于没有where条件直接导致更新了表的所有记录行. 这个时候就是关键的时候

MSSQL 2012安装报错之0x858C001B

之前安装 Microsoft Sql Server 2012 R2 的时候总是报这样的错误: SQL Server Setup has encountered the following error: The SQL Server license agreement cannot be located for the selected edition, enterprise. This could be a result of corrupted media or the edition bei

MSSQL 备份数据库还原

-- 完整还原RESTORE DATABASE XXXX FROM DISK = 'd:\XXXX.bak' WITH MOVE 'XXXX' TO 'D:\MSSQL\Data\XXXX.mdf', MOVE 'XXXX_Log' TO 'D:\MSSQL\Data\XXXX.ldf', REPLACE,NORECOVERY;GO 查看备份文件信息 RESTORE FILELISTONLY FROM DISK = N'd:\XXXX.bak';

关于sql server 2012日志变得超大的删除解决办法

首先说说,这个sql server机制其实挺严谨,他的原意是---如果你不做日志备份,就不给你删日志,然后也有脚本给你回收日志空间,算是挺安全也方便实用了. 看起来是挺合理的,但是碰到缺心眼的开发或使用者,日志一天天的胀大,而又忘记回收的话,那就悲催了,这个时候你就不可能备份了,因为硬盘空间不够用啊,不能备份也就不能删日志,就成了个死循环了. 我这边就遇到这种事,日志被撑到170G了,硬盘总共才200G空间,怎么搞好呢? 最后经过百度和google两位幕后大师傅的指点,得到了下面的方法,仅供参考

sql server 2012日志文件超大,清除日志的处理过程

有一个项目使用了sql server2012版本的数据库,一开始可能没有注意到日志文件,使得日志文件越来越大,当使用sql2008的收缩文件的方法进行操作时,问题出现了. DUMP TRANSACTION BigData WITH NO_LOG BACKUP LOG BigData WITH NO_LOG 使用上面的方法并不能解决问题,因为2012已经不支持transaction了. 通过百度搜索了大量前人的解决方式,最终找到一个解决的办法: 给出原办法出处:http://www.itpub.n

RSA加密,应用授权及MSSQL备份与还原

01.QBRSA加解密处理 --> a.利用 RSA密钥生成器生成密钥(e,n,d) [e,n]为私钥, [d,n]为公钥 b.正向加密:  用私钥加密,用公钥解密 c.反向加密:  用公钥加密, 用私钥解密 02.应用系统认证使用:TRemoteAuth a.客户端申请认证,提供一个认证文件供软件(系统名称为不带exe的文件名称) b.软件开发商依据提供的内容提供认证文件 c.客户端注册认证文件,之后正常使用客户端系统; ------------------------------------