SQL如何使用快照恢复之前的数据
什么是快照
数据库快照是SQL server 2005的一个新功能。给出的定义如下
数据库快照是数据库的只读静态视图。在创建时每个数据库快照在事务上都与源数据库一致。在创建数据库快照时,源数据库通常会有打开的事务。在快照可以使用之前,打开的事务会回滚以使数据库快照在事务上取得一致。
reg:
Use MASTER;
GO
CREATE DATABASE [ Snapshot_Test ] ON PRIMARY
( NAME = N 'Snapshot_Test ', --数据库名称
FILENAME = N 'C:\Program Files \Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\Snapshot_Test.mdf',
--数据文件存放位置及数据文件名称
SIZE = 3072KB ,
--初始容量
MAXSIZE = UNLIMITED,
--最大容量
FILEGROWTH = 1024KB
--增长容量
)
LOG ON
( NAME = N'Snaphot_Test_log',
FILENAME = N 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Snapshot_Test_log.ldf',
SIZE = 504KB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%)
COLLATE =Chinese_PRC_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'Snapshot_Test', @new_cmptlevel=130
GO
USE [Snapshot_Test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[test](
[id] [int] NOT NULL,
[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
也可以直接在SSMS里通过图形化界面创建测试数据库,在创建完数据库后,又新建了一个test表
reg:
use snapshot_Test; go INSERT INTO TEST (id,name)values(1,'hello 1'); INSERT INTO TEST (id,name)values(2,'hello 2'); INSERT INTO TEST (id,name)values(3,'hello 3'); INSERT INTO TEST (id,name)values(4,'hello 4'); GO SELECT * FROM dbo.test;
结果:
id | name | |
1 | 1 | hello 1 |
2 | 2 |
hello 2 |
3 | 3 | hello 3 |
4 | 4 | hello 4 |
现在做测试。先做个快照,语法也是CREATE DATABASEY。
reg:
create database Snapshot_Test_shot ON ( --是源数据库的逻辑名 NAME = Snapshot_Test, --快照文件地址 FileName = ‘D:\SqlDate\Snapshot_Test_shot.ss' ) AS SNAPSHOT OF Snapshot_Test;
结果:数据库快照是只读的的。可以通过sql server的对象浏览器查看可以通过USE(快照库名)来查询数据库快照。
代码如下
use Snapshot_Test_shot; go SELECT * FROM dbo.test;
结果:
id | name |
1 | hello 1 |
2 | hello 2 |
3 | hello 3 |
4 | hello 4 |
下边做测试。先删除后利用快照恢复
use Snapshot_Test;
go
DELETE FROM dbo.test;
结果:
id | name |
恢复
RESTORE DATABASE DB_NAME
FORM DATABASE_SNAPSHOT = 'DB_SNAPSHOT_NAME' ---
RESTORE DATABASE Snapshot_test
FROM DATABASE_SNAPSHOT = 'Snapshot_test_shot' --查询
use Snapshot_Test;
go
SELECT * FROM test
结果:
id | name |
1 | hello 1 |
2 | hello 2 |
3 | hello 3 |
4 | hello 4 |
小提示:快照是只读的,一旦创建不能修改
快照只能恢复数据库,不能恢复指定的表
为防止误删,必须在数据插入或更新到数据库之后再创建快照,否则在插入或更新之前创建快照,插入或更新的数据被删除也无法恢复
一般与定时一起使用,可以定时创建不同的快照防止数据丢失
删除快照
DROP DATABASE Snapshot_Test_shot
结果:没有文件,证明被删除
应用场景:在MSDN中如下
维护历史数据已生成报表
使用了可以实现可用性目标而维护的镜像数据库
使数据免收管理失误所带来的影响
使数据免受用户失误带来的影响
SQL如何使用快照恢复之前的数据的更多相关文章
- 使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复
使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复 这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 ...
- Sql Server数据库快照初探
什么是快照 数据库快照是 SQL Server 数据库(源数据库)的只读静态视图.换句话说,快照可以理解为一个只读的数据库.利用快照,可以提供如下好处: 提供了一个静态的视图来为报表提供服务 可以利用 ...
- SQL Server数据库快照的工作方式
SQL Server数据库快照的工作方式 翻译自:How Database Snapshots Work 最近有一个帖子<errorlog中的异常信息rolled forward 和rolled ...
- Oracle 无备份情况下的恢复--控制文件/数据文件
13.3无备份恢复控制文件 没有备份恢复控制文件其实就是在nomount状态,create control创建一个新的控制文件. dba必须知道4个信息才能正确的创建:数据库名.在线日志路径及其大小. ...
- SQL Server ---(CDC)监控表数据(转译)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现过程(Realization) 补充说明(Addon) 参考文献(References) ...
- 转 一篇关于sql server 三种恢复模式的文章,从sql server 的机制上来写的,感觉很不错,转了
简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确 ...
- SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪
来源:http://www.cnblogs.com/downmoon/archive/2012/04/10/2439462.html 本文主要介绍SQL Server中记录数据变更的四个方法:触发器 ...
- 用友金蝶SQL数据库误格式化恢复 SQL数据库修复 SQL数据库恢复 工具 方法
用友金蝶SQL数据库误格式化恢复 SQL数据库修复 SQL数据库恢复 硬盘误格式化.重分区.重装操作系统覆盖 SQL数据解决方法 [客户名称]:贵州铜仁市开天驾驶人培训中心 [软件名称]:用友T3普及 ...
- MariaDB/MySQL备份和恢复(二):数据导入、导出
MariaDB/MySQL备份恢复系列: 备份和恢复(一):mysqldump工具用法详述 备份和恢复(二):导入.导出表数据 备份和恢复(三):xtrabackup用法和原理详述 1.导出.导入数据 ...
随机推荐
- Django--Forms组件使用
Forms组件的使用 在html表单验证中,需要通过各种信息的验证,比如注册界面的姓名.密码.邮箱.电话等的验证,是否符合定义好的规则,不可能每次都要取出对应的字段一一判断,django内置了Form ...
- docker初学
Docker基础知识 1. Docker基础知识点 1.1 什么是Docker Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.(集装箱原理) 1.2 什 ...
- apache2 配置入门
ServerRoot "/usr/local/apache2" #服务器根目录 Listen #监听端口 语法格式为Listen [IP地址:]端口 [协议],其中IP地址与协议为 ...
- ThreadPoolExecutor扩展
import java.util.concurrent.*; /** * ThreadPoolExecutor扩展 */ public class ExtThreadPool { public sta ...
- mybatis整合redis二级缓存
mybatis默认开启了二级缓存功能,在mybatis主配置文件中,将cacheEnabled设置成false,则会关闭二级缓存功能 <settings> <!--二级缓存默认开启, ...
- python学习笔记(三)字典操作和元组操作
字典: 字典也是我们开发过程中最常用的一种数据类型:具有极快的查找速度:字典是一种key-value的数据类型,比如说要存每个人的信息,那么每个人的编号就是key,value就是每个人的信息,这样的话 ...
- yii2.0增删改查实例讲解
yii2.0增删改查实例讲解一.创建数据库文件. 创建表 CREATE TABLE `resource` ( `id` int(10) NOT NULL AUTO_INCREMENT, `textur ...
- visual studio code的使用
1.添加代码片段 参考:https://blog.csdn.net/qq_36370731/article/details/83014439 2.在vscode上运行Git 先打开vscode内置的G ...
- 【CF1257A】Two Rival Students【思维】
题意:给你n个人和两个尖子生a,b,你可以操作k次,每次操作交换相邻两个人的位置,求问操作k次以内使得ab两人距离最远是多少 题解:贪心尽可能的将两人往两边移动,总结一下就是min(n-1,|a-b| ...
- [CSP-S模拟测试]:平均数(二分答案+归并排序)
题目描述 有一天,小$A$得到了一个长度为$n$的序列.他把这个序列的所有连续子序列都列了出来,并对每一个子序列都求了其平均值,然后他把这些平均值写在纸上,并对它们进行排序,最后他报出了第$k$小的平 ...