【数据库的备份与还原】 .
差异备份,日志备份还原
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'
【数据库的备份与还原】 .相关推荐
- DQL查询语句约束数据库设计备份和还原
DQL:查询语句 1. 排序查询* 语法:order by 子句* order by 排序字段1 排序方式1 , 排序字段2 排序方式2...* 排序方式:* ASC:升序,默认的.* DESC:降序 ...
- Linux下MySQL数据库的备份与还原,mysql快速导入导出数据库实例演示,解决mysql大数据量数据库导出慢的问题
MySQL 数据库的备份与还原 第一章:数据库的导入与导出 ① 数据库的导出 ② 大数据量下 mysqldump 的导出优化 ③ 数据库的导出 第一章:数据库的导入与导出 ① 数据库的导出 需要用到 ...
- MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- [JavaWeb-MySQL]数据库的备份和还原
数据库的备份和还原 1. 命令行:* 语法:* 备份: mysqldump -u用户名 -p密码 数据库名称 > 保存的路径* 还原:1. 登录数据库2. 创建数据库3. 使用数据库4. 执行文 ...
- SQL2008数据库的备份与还原
一.上期小编分享了SQL2000数据库的备份与还原,这期小编再来分享下SQL2008数据库的备份与还原. 二.SQL2008数据库的备份 1.登录sql server management studi ...
- Java对MySql数据库进行备份与还原
数据库的备份与还原对项目而言是无疑是对安全考虑的好方法,MySQL 数据库备份原理: Navicat等数据库界面软件通用的数据库备份原理就是直接调用MYSQL本身的系统命令. 那么Java是如何来实现 ...
- java day27【DQL:查询语句、约束 、多表之间的关系 、范式 、数据库的备份和还原】...
第一章 DQL:查询语句 1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: * ASC:升序,默认的. ...
- 数据库的备份与还原+INI文件数据库参数配置
利用SQL语句来完成对SQL Server数据库的备份与还原功能 仅以练习 完成代码如下: ------------------------------ unit Unit1; interface u ...
- 达梦数据库之备份与还原
备份与还原是DBA必备的技能之一,为防止数据的误操作.误删除等突发情况,所以备份还原至关重要,一下从几方面共同学习一下达梦数据库的备份与还原基础知识. 一.概述 达梦数据库的备份还原方式:物理备份还原 ...
- 多表关系、数据库设计的范式、数据库的备份和还原、多表查询、事务、DCL(了解)
文章目录 多表关系 数据库设计的范式 数据库的备份和还原 多表查询 多表查询的分类:内连接查询 隐式内连接:使用where条件消除无用数据 显式内连接 多表查询的分类:外连接查询 左外连接 右外连接 ...
最新文章
- HiCar SDK概述
- ios 代码设置控件宽高比_用宽高比调整UIImage的大小?
- DeepMind提出强化学习新算法,教智能体从零学控制
- Linux命令(32):rar命令-解压
- MongoDB3.6.3 windows安装配置、启动
- spring 通过编程来获取属性文件
- helm istio k8s docker
- linux文件分别打包命令,Linux文件打包命令
- mysql 连接字符集_MySQL字符集详解
- 【SICP练习】53 练习2.21
- 通道的分离与合并,ROI,
- CSDN:数学公式编辑器
- CodeMirror使用说明书
- Springboot开启APR模式
- lisp方格网法计算土方量_方格网法计算土方量实例例题
- z390 m.2 接口插上sata 硬盘后,机械硬盘不识别;HDD 硬盘不识别;z390 m.2和 SATA 硬盘安装组合;
- 特征工程常用于特征提取方法——数值特征
- Error: docker-ce-cli conflicts with 2:docker-1.13.1-209.git7d71120.el7.centos.x86_64
- android设置图片长宽比例,【教程】安卓保证图片长宽比的同时拉伸图片
- python print 函数出错
热门文章
- 【经验贴】smartCarers在比赛后如何获取更好的发展
- sjf调度算法_如何通过静态方法预测SJF调度中未来过程的突发时间?
- kotlin实现继承_Kotlin程序| 继承的例子
- 前序遍历m-ary树_在Ruby中使用ary [start,length]- object进行数组元素分配
- 用于连接mysql的java类_【考试】列举Java连接数据库用到的类有哪些。
- LeetCode(合集) 路径总和(二叉树) golang copy的值复制
- vivo C/C++工程师 HR视频面试问题总结20180807
- MTD和 uboot中的bootargs 下属 mtdparts
- C++成员函数指针的应用
- 【计算机系统设计】实践笔记(3)改进数据通路:jr指令分析与实现