SQL中如何用快照,恢复被误删的数据?

news2024/9/22 21:18:53

什么是快照

数据库快照是sql server 2005的一个新功能。MSDN上对它的定义是:

数据库快照是数据库(称为“源数据库”)的只读静态视图。在创建时,每个数据库快照在事务上都与源数据库一致。在创建数据库快照时,源数据库通常会有打开的事务。在快照可以使用之前,打开的事务会回滚以使数据库快照在事务上取得一致。
创建示例数据库

Use MASTER;
GO
CREATE DATABASE [Snapshot_Test] ON  PRIMARY
( NAME = N'Snapshot_Test', --数据库名称
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Snapshot_Test.mdf',
--数据文件存放位置及数据文件名称
SIZE = 3072KB ,
--初始容量
MAXSIZE = UNLIMITED,
--最大容量
FILEGROWTH = 1024KB
--增长容量
)
LOG ON
( NAME = N'Snapshot_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]

也可以直接在SSMS里通过图形化界面创建测试数据库,这里不作赘述。在创建完数据库之后,我们又新建了一个test表,我们先往里面插入测试数据。如下:

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;

在这里插入图片描述
然后我们马上创建一个快照,创建快照使用的也是CREATE DATABASE语句,如下:
创建数据库快照

执行下面的创建快照的语句

create database Snapshot_Test_shot ON
(
   --是源数据库的逻辑名
   Name = Snapshot_Test,
   --快照文件地址
   FileName = 'D:\SqlData\Snapshot_Test_shot.ss'
)
AS SNAPSHOT OF Snapshot_Test;

在这里插入图片描述
现在的快照应该和我们新建的数据库一摸一样,可以通过sql server的对象浏览器查看数据库快照,我们可以通过USE [快照库名]来查询数据库快照

use Snapshot_Test_shot;
go
SELECT * FROM dbo.test;

在这里插入图片描述
删除测试库数据

下面我们删除测试数据库中的数据

use Snapshot_Test;
go
DELETE FROM dbo.test;

在这里插入图片描述
使用快照恢复数据库

上面删除是我们模拟误删了数据库中的数据,但是幸好我们做了数据库的快照。可以通过快照来还原刚才被误删的数据。

--语法
RESTORE DATABASE DB_NAME
FROM DATABASE_SNAPSHOT = 'DB_SNAPSHOT_NAME'

我们按照上面的语法进行恢复

RESTORE DATABASE Snapshot_test
FROM DATABASE_SNAPSHOT = 'Snapshot_test_shot'

执行完上面的恢复语句后,我们再查询一下测试库中的表

use Snapshot_Test;
go
SELECT * FROM test

在这里插入图片描述
数据又回来,证明可以通过创建快照来恢复被误删的数据。

注意:

1、快照是只读的,一旦创建不能修改

2、快照只能恢复数据库,不能恢复指定的表

3、为防止误删除,必须在数据插入或更新到数据库之后再创建快照,否则在插入或更新之前创建快照,插入或更新的数据被删除是无法恢复的。

4、快照一般与定时任务一起使用,可以定时创建不同的快照防止数据丢失。

删除数据库快照

和删除数据库的语法一样

DROP DATABASE Snapshot_Test_shot
结果:

图片

数据库快照下面没有任何快照了,说明已经被删除。

应用场景

在MSDN中数据库快照的典型应用是

1) 维护历史数据以生成报表。

2) 使用为了实现可用性目标而维护的镜像数据库来卸载报表。

3) 使数据免受管理失误所带来的影响。

4) 使数据免受用户失误所带来的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/735764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

THREE.JS镜头随鼠标晃动效果

为了让动画更灵活并且简单 借助gsap让其具有更多可能,在未来更容易扩充其他动效 gsap Dom跟随鼠标移动 gsap.quickTo() 首先要监听鼠标移动,并且将移动的值转换到 -1 和 1 之间 方便处理 private mousemove(e: MouseEvent) {const x (e.clientX / inner…

spring10-配置数据元

他的作用是提高我们程序性能的:我们怎么用呢!先创建我们数据源对象:创建初始化对象之后,创建数据源对象之后,会给我们一些初始化资源。 使用完后还给他 ,这是一种环保的思想。 常见的数据源:底…

干货-卷起来,企业级web自动化测试实战落地(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 WebDriver的基本使…

毫米波雷达 TI IWR1443 测试官方程序(Out Of Box Demo)

IWR1443 windows 文章目录 1、准备工作1.1、mmWave SDK1.2、Code Composer Studio(CCS)1.3、Uniflash1.4、TI Cloud Agent 2、导入工程3、烧录3.1、先将 IWR1443 调到 Flashing Mode3.2、使用 UniFlash 软件 4、运行GUI4.1、IWR1443 调到 Functional Mo…

【计算机组成与体系结构Ⅰ】实验0 Logisim 入门实验

一、实验目的 1:掌握加减法器工作原理。 2:能够设计出一个n位加减法器。 3:熟悉Logisim软件使用。 二、实验环境 (1)Logisim 2.7.1 (2)Microsoft Windows 10 三、实验内容 1:设…

FastAPI中如何正确理解和使用:async和await

1 缘起 项目需要, 技术选型使用FastAPI。 开发过程中,遇到需要异步操作的场景, 查阅相关FastAPI异步信息的过程中,发现了async和await组合技, 通过阅读官方文档和实际测试,发现,async和await并不是传统意义上的异步(如线程池异步执行任务), async和await的融合技是应…

SEGA: Semantic Guided Attention on Visual Prototype for Few-Shot Learning

方法比较简单,利用语义改进prototype,能促进性提升

如何系统学习分布式?

关键词:想要走存储/数据库方向的话,具体路线是啥?重点需要掌握精通哪些知识? 回答 那我简单说一下走存储/数据库这块的学习路线吧。 目前做存储比较热门的是分布式存储方向,有NoSQL的也有关系型数据库的&#xff0c…

21.DAC数模转换

1.STM32 DAC介绍: DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号。 DAC主要特性: 2个DAC转换器,每个转换器对应1个输出通道;8位或者12位单调输出;12位模式下数据左…

Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测

Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测 任务五:使用TFIDF特征和XGBoost完成训练和预测 说明:在这个任务中,你需要使用TFIDF特征和XGBoost算法完成训练和预测,进一步提升文本…

Matlab数学建模实战——(Lokta-Volterra掠食者-猎物方程)

1.题目 问题1 该数学建模的第一问和第二问主要是用Matlab求解微分方程组,直接编程即可。 求解 Step1改写 y(1)ry(2)f Step2得y的导数 y(1).2y(1)-ay(1)*y(2)y(2).-y(2)a*y(1)*y(2) Step3编程 clear; a0.01; F(t,y)[2*y(1)-a*y(1)*y(2);-y(2)a*y(1)*y(2)]; […

【Mac】Mac 通过路径找到对应的文件夹

mac 的快捷键 复制文件夹或文件全路径 命令:command Option C 跳转文件夹或文件 命令:command shift G 其他待补充

hexo #02 基本操作

本篇主要步骤 1、创建博客 1、创建博客 使用 $ hexo new [layout] <title>命令创建一篇新的博客。 PS hexo> npx hexo new post "test" Debugger attached. Debugger attached. INFO Validating config INFO Created: D:\hexo\source\_posts\test.md Wa…

MySQL表单查询以及多表查询

1.单表查询 CREATE TABLE emp ( empno int(4) NOT NULL, ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, mgr int(4) NULL DEFAULT NULL, hi…

基于51单片机的羽毛球计分器设计

功能&#xff1a; 本实例是基于51单片机的羽毛球计分器&#xff0c;主要硬件由51单片机最小系统&#xff0c;LCD1602液晶屏电路&#xff0c;按键电路构成。 1.本设计选用LCD1602液晶屏作为显示器件&#xff0c;用于记录两队的分数。 2.按照设计的功能模块共选用8个按键&#xf…

【软件测试】Git查看commit的提交历史(详细)一点即通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 查看提交历史 在提…

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型,含短期预测未来功能

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型&#xff0c;含短期预测未来功能 一、效果展示 二、数据设置 数据采用一列数据滑动窗口设置为5 &#xff0c;可自行设置70%训练30%测试预测未来值为10 &#xff0c;可自行设置&#xff0c;控制10以内 三、模型…

zabbix proxy的配置及zabbix实现高可用(监控 windows,java应用,SNMP等)

目录 zabbix proxy 分布式代理服务器部署zabbix proxy 代理服务器部署 Zabbix 高可用集群Zabbix 监控 Windows 系统Zabbix 监控 java 应用Zabbix 监控 SNMP zabbix proxy 分布式代理服务器 zabbix 分布式代理服务器&#xff0c;可以代替zabbix server 采集性能和可用性数据。z…

C++的范围for语句详解 附易错实例

&#x1f4af; 博客内容&#xff1a;C读取一行内个数不定的整数的方式 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家&…

匿名管道的使用示例

目录 整体框架 通信步骤 创建管道 ​编辑创建子进程&关闭相应的fd ​编辑 进程间通信 父子进程通信之间四种场景 实现父亲读&#xff0c;孩子写的进程间通信 管道通信的使用场景样例实现 整体框架 通信步骤 创建管道 pipe的参数为输出型参数&#xff0c;返回读写端…