差异备份,日志备份还原

IF DB_ID('db') IS NOT NULL

DROP DATABASE db

GO

CREATE DATABASE db

GO

CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));

GO

BACKUP DATABASE db TO DISK='d:/1.bak' WITH FORMAT

GO

INSERT INTO db.dbo.T DEFAULT VALUES

GO

BACKUP DATABASE db TO DISK='d:/2.bak' WITH FORMAT,DIFFERENTIAL

GO

INSERT INTO db.dbo.T DEFAULT VALUES

GO

BACKUP LOG db TO DISK='d:/3.bak' WITH FORMAT

GO

DROP DATABASE db;

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH RECOVERY,REPLACE;

GO

SELECT COUNT(*) FROM db.dbo.T;

GO

DROP DATABASE db;

GO

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

RESTORE DATABASE db FROM DISK='d:/2.bak' WITH RECOVERY;

GO

SELECT COUNT(*) FROM db.dbo.T;

DROP DATABASE db;

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

RESTORE DATABASE db FROM DISK='d:/2.bak' WITH NORECOVERY;

GO

RESTORE LOG db FROM DISK='d:/3.bak' WITH RECOVERY;

GO

SELECT COUNT(*) FROM db.dbo.T;

DROP DATABASE db;

使用日志恢复数据库

IF DB_ID('db') IS NOT NULL

DROP DATABASE db;

GO

CREATE DATABASE db;

GO

CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));

GO

BACKUP DATABASE db TO DISK='d:/1.bak' WITH FORMAT;

GO

INSERT INTO db.dbo.T DEFAULT VALUES;

GO

BACKUP LOG db TO DISK='d:/2.bak' WITH FORMAT;

GO

INSERT INTO db.dbo.T DEFAULT VALUES;

GO

BACKUP LOG db TO DISK='d:/3.bak' WITH FORMAT;

GO

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH RECOVERY,REPLACE;

GO

SELECT * FROM db.dbo.T

GO

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

RESTORE LOG db FROM DISK='d:/2.bak' WITH RECOVERY;

GO

SELECT * FROM db.dbo.T

GO

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

RESTORE LOG db FROM DISK='d:/2.bak' WITH NORECOVERY;

GO

RESTORE LOG db FROM DISK='d:/3.bak' WITH RECOVERY;

GO

SELECT * FROM db.dbo.T

GO

DROP DATABASE db;

恢复到特定的备份日期

IF DB_ID('db') IS NOT NULL

DROP DATABASE db;

GO

CREATE DATABASE db;

GO

CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));

GO

BACKUP DATABASE db TO DISK='d:/1.bak' WITH FORMAT;

GO

INSERT INTO db.dbo.T DEFAULT VALUES;

GO

WAITFOR DELAY '00:00:01';

DECLARE @Datetime BINARY(128);

SET @Datetime=CAST(GETDATE() AS BINARY(128));

SET CONTEXT_INFO @Datetime

GO

INSERT INTO db.dbo.T DEFAULT VALUES;

GO

BACKUP LOG db TO DISK='d:/2.bak' WITH FORMAT;

GO

RESTORE DATABASE db FROM DISK='d:/1.bak' WITH NORECOVERY,REPLACE;

GO

DECLARE @Now DATETIME;

SET @Now=DATEADD(SECOND,-1,(SELECT CAST(CONTEXT_INFO() AS DATETIME)));

RESTORE LOG db FROM DISK='d:/2.bak' WITH RECOVERY,STOPAT=@Now;

GO

SELECT * FROM db.dbo.T

DROP DATABASE db;

GO

还原到标识事务

--Create test database

CREATE DATABASE db

GO

--Create test table on database named db

CREATE TABLE db.dbo.T (ID INT PRIMARY KEY);

GO

--Create full backup to disk 'F:/Documents and Settings/Administrator/桌面/1.bak'

BACKUP DATABASE db TO DISK='F:/Documents and Settings/Administrator/桌面/1.bak' WITH FORMAT;

GO

--Begin a marked transaction "Tran1"

BEGIN TRAN Tran1 WITH MARK

INSERT INTO db.dbo.T SELECT 1

COMMIT TRAN Tran1

--Backup the transaction log to disk 'F:/Documents and Settings/Administrator/桌面/2.bak'

BACKUP LOG db TO DISK='F:/Documents and Settings/Administrator/桌面/2.bak' WITH FORMAT

GO

DROP DATABASE db;

GO

RESTORE DATABASE db FROM DISK='F:/Documents and Settings/Administrator/桌面/1.bak' WITH NORECOVERY;

GO

RESTORE LOG db FROM DISK='F:/Documents and Settings/Administrator/桌面/2.bak' WITH STOPBEFOREMARK='Tran1';

GO

SELECT COUNT(*) FROM db.dbo.T

DROP DATABASE db;

GO

RESTORE DATABASE db FROM DISK='F:/Documents and Settings/Administrator/桌面/1.bak' WITH NORECOVERY;

GO

RESTORE LOG db FROM DISK='F:/Documents and Settings/Administrator/桌面/2.bak' WITH STOPATMARK='Tran1';

GO

SELECT COUNT(*) FROM db.dbo.T

DROP DATABASE db

数据库的在线还原(读写文件组完整恢复模式)

IF DB_ID('db') IS NOT NULL

DROP DATABASE db;

GO

CREATE DATABASE db

ON PRIMARY

(

NAME=db_data,

FILENAME='c:/1.mdf'

),

FILEGROUP FG

(

NAME=db_data_fg,

FILENAME='c:/2.ndf'

)

LOG ON

(

NAME=db_log,

FILENAME='c:/1.ldf'

)

GO

--在主文件组下创建表T

CREATE TABLE db.dbo.T(ID INT PRIMARY KEY) ON [PRIMARY];

--插入记录

INSERT INTO db.dbo.T SELECT 1

GO

--主文件组在线,那么就视为数据库在线

--创建文件db_data_fg备份

BACKUP DATABASE db FILE='db_data_fg' TO DISK='c:/1.bak' WITH FORMAT

--进行在先还原,指定NORECOVERY 以后,就只能按顺序进行前滚,同时文件离线还原状态.

RESTORE DATABASE db FILE='db_data_fg' FROM DISK='c:/1.bak' WITH NORECOVERY

--创建表失败,因为离线

CREATE TABLE db.dbo.T1(ID INT PRIMARY KEY) ON fg;

--主文件组不受影响,因为只是FG离线还原,只有企业版才支持哈.这种情况下生产环境中,不至于数据库全部挂了.

SELECT * FROM db.dbo.T

--备份日志,使用COPY_ONLY,因为是要获取的日志是离线状态时候的,COPY_ONLY仅复制备份是在SQL Server 2005 中引入的,用于在执行特殊目的的备份(例如在联机文件还原前备份日志)时使用

--如果是只读文件的话,明显不会出现差异数据,所以不需要日志备份了

--简单恢复模式的话,日志都不能备份,所以也是一样

--顺便提一句,如果数据库是文件损坏,而且损坏时候都在线,要使用NO_TRUNCATE获取日志

BACKUP LOG db TO DISK='c:/2.bak' WITH FORMAT,COPY_ONLY;

--恢复LOG

RESTORE LOG db FROM DISK='c:/2.bak' WITH RECOVERY

--FG终于在线了,恭喜下,创建一个T1表

CREATE TABLE db.dbo.T1(ID INT PRIMARY KEY) ON fg;

GO

DROP DATABASE db;

数据库的段落还原(完整恢复模式)

IF DB_ID('db') IS NOT NULL

DROP DATABASE db

GO

--创建包含多个文件组的数据库db

CREATE DATABASE db

ON PRIMARY

(

NAME=db_data,

FILENAME='c:/db_data.mdf'

),

FILEGROUP A

(

NAME=db_data_a,

FILENAME='c:/db_data_a.ndf'

),

FILEGROUP B

(

NAME=db_data_b,

FILENAME='c:/db_data_b.ndf'

【数据库的备份与还原】 .相关推荐

  1. DQL查询语句约束数据库设计备份和还原

    DQL:查询语句 1. 排序查询* 语法:order by 子句* order by 排序字段1 排序方式1 , 排序字段2 排序方式2...* 排序方式:* ASC:升序,默认的.* DESC:降序 ...

  2. Linux下MySQL数据库的备份与还原,mysql快速导入导出数据库实例演示,解决mysql大数据量数据库导出慢的问题

    MySQL 数据库的备份与还原 第一章:数据库的导入与导出 ① 数据库的导出 ② 大数据量下 mysqldump 的导出优化 ③ 数据库的导出 第一章:数据库的导入与导出 ① 数据库的导出 需要用到 ...

  3. MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  4. [JavaWeb-MySQL]数据库的备份和还原

    数据库的备份和还原 1. 命令行:* 语法:* 备份: mysqldump -u用户名 -p密码 数据库名称 > 保存的路径* 还原:1. 登录数据库2. 创建数据库3. 使用数据库4. 执行文 ...

  5. SQL2008数据库的备份与还原

    一.上期小编分享了SQL2000数据库的备份与还原,这期小编再来分享下SQL2008数据库的备份与还原. 二.SQL2008数据库的备份 1.登录sql server management studi ...

  6. Java对MySql数据库进行备份与还原

    数据库的备份与还原对项目而言是无疑是对安全考虑的好方法,MySQL 数据库备份原理: Navicat等数据库界面软件通用的数据库备份原理就是直接调用MYSQL本身的系统命令. 那么Java是如何来实现 ...

  7. java day27【DQL:查询语句、约束 、多表之间的关系 、范式 、数据库的备份和还原】...

    第一章  DQL:查询语句 1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: * ASC:升序,默认的. ...

  8. 数据库的备份与还原+INI文件数据库参数配置

    利用SQL语句来完成对SQL Server数据库的备份与还原功能 仅以练习 完成代码如下: ------------------------------ unit Unit1; interface u ...

  9. 达梦数据库之备份与还原

    备份与还原是DBA必备的技能之一,为防止数据的误操作.误删除等突发情况,所以备份还原至关重要,一下从几方面共同学习一下达梦数据库的备份与还原基础知识. 一.概述 达梦数据库的备份还原方式:物理备份还原 ...

  10. 多表关系、数据库设计的范式、数据库的备份和还原、多表查询、事务、DCL(了解)

    文章目录 多表关系 数据库设计的范式 数据库的备份和还原 多表查询 多表查询的分类:内连接查询 隐式内连接:使用where条件消除无用数据 显式内连接 多表查询的分类:外连接查询 左外连接 右外连接 ...

最新文章

  1. HiCar SDK概述
  2. ios 代码设置控件宽高比_用宽高比调整UIImage的大小?
  3. DeepMind提出强化学习新算法,教智能体从零学控制
  4. Linux命令(32):rar命令-解压
  5. MongoDB3.6.3 windows安装配置、启动
  6. spring 通过编程来获取属性文件
  7. helm istio k8s docker
  8. linux文件分别打包命令,Linux文件打包命令
  9. mysql 连接字符集_MySQL字符集详解
  10. 【SICP练习】53 练习2.21
  11. 通道的分离与合并,ROI,
  12. CSDN:数学公式编辑器
  13. CodeMirror使用说明书
  14. Springboot开启APR模式
  15. lisp方格网法计算土方量_方格网法计算土方量实例例题
  16. z390 m.2 接口插上sata 硬盘后,机械硬盘不识别;HDD 硬盘不识别;z390 m.2和 SATA 硬盘安装组合;
  17. 特征工程常用于特征提取方法——数值特征
  18. Error: docker-ce-cli conflicts with 2:docker-1.13.1-209.git7d71120.el7.centos.x86_64
  19. android设置图片长宽比例,【教程】安卓保证图片长宽比的同时拉伸图片
  20. python print 函数出错

热门文章

  1. 【经验贴】smartCarers在比赛后如何获取更好的发展
  2. sjf调度算法_如何通过静态方法预测SJF调度中未来过程的突发时间?
  3. kotlin实现继承_Kotlin程序| 继承的例子
  4. 前序遍历m-ary树_在Ruby中使用ary [start,length]- object进行数组元素分配
  5. 用于连接mysql的java类_【考试】列举Java连接数据库用到的类有哪些。
  6. LeetCode(合集) 路径总和(二叉树) golang copy的值复制
  7. vivo C/C++工程师 HR视频面试问题总结20180807
  8. MTD和 uboot中的bootargs 下属 mtdparts
  9. C++成员函数指针的应用
  10. 【计算机系统设计】实践笔记(3)改进数据通路:jr指令分析与实现