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.导出.导入数据 ...
随机推荐
- python常用函数 L
lstrip(str) 删除字符串左边的字符,支持传入参数. 例子: ljust(int) 格式化字符串,左对齐,支持传入填充值. 例子: loads(json) 将json字符串转换为dict. 例 ...
- mysql授予权限
grant show databases on *.* to 'asg'@'%'; grant select on *.* to 'asg'@'%'; grant show view on *.* t ...
- mysql sqlyog提示2058错误或者用Navicat连接本机Docker的Mysql 和一些问题的解决方案
1. 下载Mysql的Docker镜像: [plain] view plain copy$ docker search mysql (搜索mysql镜像) $ docker pull mysql ( ...
- maven多模块
https://www.cnblogs.com/lichking2017/p/8996939.html
- mongodb Access control is not enabled for the database 无访问控制解决方案
转载:https://blog.csdn.net/q1056843325/article/details/70941697 今天使用MongoDB时遇到了一些问题 建立数据库连接时出现了warning ...
- python爬虫:2.每天爬取数据量是多少?
带宽 网站阈值 单机 分布式 几百万
- visual studio 中gitflow使用
vs中已集成了git,但是如果想使用gitflow,要去扩展包里面下载 装完后,在右侧面板的"团队资源管理"就会出现gitflow 进行git flow实始化 后就可以进行 各分支 ...
- spring-cloud:eureka server单机、双机、集群示例
1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springCl ...
- spfa模板(洛谷3371)
洛谷P3371 //spfa:求s到各点的最短路,可含负权边 #include <cstdio> using namespace std; ,max_m=,inf=; struct ety ...
- 【CF1210C】Kamil and Making a Stream(vector,数论,树)
题意:给定一棵n个点带点权的树,i号点的点定义f(i,j)为i到j路径上所有点的gcd,其中i是j的一个祖先,求所有f(i,j)之和mod1e9+7 2<=n<=1e5,0<=a[i ...