数据库快照是 SQL Server 数据库(源数据库)的只读静态视图。 自创建快照那刻起,数据库快照在事务上与源数据库一致。 数据库快照始终与其源数据库位于同一服务器实例上。 当源数据库更新时,数据库快照也将更新。 因此,数据库快照存在的时间越长,就越有可能用完其可用磁盘空间。

给定源数据库中可以存在多个快照。 在数据库所有者显式删除每个数据库快照之前,该快照将一直保留。

数据库快照在数据页级运行。 在第一次修改源数据库页之前,先将原始页从源数据库复制到快照。 快照将存储原始页,保留它们在创建快照时的数据记录。 对要进行第一次修改的每一页重复此过程。 对于用户而言,数据库快照似乎始终保持不变,因为对数据库快照的读操作始终访问原始数据页,而与页驻留的位置无关。

为了存储复制的原始页,快照使用一个或多个“稀疏文件”。 最初,稀疏文件实质上是空文件,不包含用户数据并且未被分配存储用户数据的磁盘空间。 随着源数据库中更新的页越来越多,文件的大小也不断增长。 下图说明了两种相对的更新模式对快照大小的影响。 更新模式 A 反映的是在快照使用期限内仅有 30% 的原始页更新的环境。 更新模式 B 反映的是在快照使用期限内有 80% 的原始页更新的环境。

更多详细信息参考:http://msdn.microsoft.com/zh-cn/library/ms175158.aspx

=============================================================

数据库快照 (database snapshot)

一个数据库(源数据库)的事务一致的只读静态视图。

源数据库 (source database)

对于数据库快照,指的是在其上创建快照的数据库。 数据库快照与源数据库相关。 数据库快照必须与数据库在同一服务器实例上。 此外,如果数据库因某种原因而不可用,则它的所有数据库快照也将不可用。

稀疏文件 (sparse file)

NTFS 文件系统提供的文件,需要的磁盘空间要比其他文件格式少很多。 稀疏文件用于存储复制到数据库快照的页面。 首次创建稀疏文件时,稀疏文件占用的磁盘空间非常少。 随着数据写入数据库快照,NTFS 会将磁盘空间逐渐分配给相应的稀疏文件。

=============================================================

注意事项

无法对脱机或损坏的数据库进行恢复。 因此,为了保护数据库,非常有必要定期执行备份并测试还原计划。

数据库快照与源数据库相关。 因此,使用数据库快照还原数据库不能代替备份和还原策略。 严格按计划执行备份仍然至关重要。 如果必须将源数据库还原到创建数据库快照的时间点,请实施允许您执行该操作的备份策略。

使用数据库快照的原因,决定了数据库需要多少个并发快照、多久创建一次新快照以及将其保留多久。     所有恢复模式都支持数据库快照。

可以备份源数据库,这方面将不受数据库快照的影响。

通常情况下,快照只会保留一段有限的时间,因此其大小不是主要问题。 但是,保留快照的时间越长,越有可能将可用空间用完。 稀疏文件最大只能增长到创建快照时相应的源数据库文件的大小。

除文件空间外,数据库快照与数据库占用的资源量大致相同。

数据库快照不支持 FILESTREAM 文件组。

禁止对 model 数据库、master 数据库和 tempdb 数据库创建快照。

快照为只读。

不能从源数据库或任何快照中删除文件。

源数据库的性能受到影响。由于每次更新页时都会对快照执行“写入时复制”操作,导致源数据库上的 I/O 增加。

不能对源数据库进行删除、分离或还原。

============================================================

创建数据库快照

最佳做法:限制数据库快照的数量

随着时间的变化创建一系列快照可捕获源数据库的连续快照。 每个数据库快照会一直保存在系统中,直到被显式删除。 因为每个快照会随着原始页的更新而不断增长,所以您可能想在创建新快照后通过删除旧的快照来节省空间。

创建数据库快照的语法如下

CREATE DATABASE database_snapshot_name

ON

(

NAME = logical_file_name,

FILENAME = 'os_file_name'

) [ ,...n]

AS SNAPSHOT OF source_database_name

[;]

其中,source_database_name 是源数据库,logical_file_name 是引用该文件时在 SQL Server 中使用的逻辑名称,os_file_name 是创建该文件时操作系统使用的路径和文件名,database_snapshot_name 是要将数据库恢复到的快照的名称。

在做数据库快照之前,我们应该先查看一下有多少个数据文件,从而指定不同数量的快照文件,如图。我这里只有一个数据文件,name = db01

然后执行下面的语句来创建db01数据库的快照,如图。

db01_data_1100是快照数据库的名称

name = db01表示要为db01这个数据文件创建快照

filename是快照数据库存放数据的稀疏文件,后面的ss后缀是随便起的

创建完成后,如下图所示。

==============================================================

从快照数据库中恢复

可以在做大量数据库操作之前先做一个快照,以便于在误删除数据的时候,可以使用快照来恢复。

==============================================================

删除数据库快照

删除数据库快照的方式和删除普通数据库没有什么区别。

===============================================================

其实从表面上看,快照数据库和普通数据库没什么区别,唯一不同的是快照数据库采用的是稀疏文件,存放数据库创建快照以后所变化的数据,所以实际上快照数据库占用的空间比较少,原理可参考文章前面的图片。

下图的命令用来显示特定数据库的ID号,下图查找出db01的ID号为7,快照数据库db01_data_1100的ID号为9.

通过下图的命令可以看到快照数据库和对应的用户数据库在大小上都是640,但是实际上快照数据库占用的空间要少得多。

通过下图可以看到快照数据库大小5M,实际占用为128KB。

================================================================

SQL Server 2012笔记分享-49:理解数据库快照相关推荐

  1. SQL Server 2012笔记分享-6:理解内存管理

    内存管理 – SQL Server 2005/2008/2008r2 SQL Server 2012以前的版本(SQL 2005/2008/2008R2),有single page allocator ...

  2. SQL Server 2012笔记分享-47:Database Recovery Advisor

    下面英文的部分,参考了官方的语言.     简单来说,两大优势: 帮助数据库管理员创建最佳的恢复序列 使用msdb中的备份历史纪录 The Database Recovery Advisor(数据库恢 ...

  3. SQL Server 2012笔记分享-48:备份时间线

    备份时间线是SQL server 2012数据库恢复顾问页面中的一项重要新功能,可以让我们更方便的基于备份时间点进行数据库的恢复. 在SQL server 2012的还原数据库界面,可以找到时间线,如 ...

  4. SQL Server 2012笔记分享-35:配置客户端网络协议

    客户端应用程序可以使用 TCP/IP.命名管道.VIA 或共享内存协议连接到 Microsoft SQL Server.可以通过使用 SQL Server Native Client dll 中包含的 ...

  5. SQL Server 2012笔记分享-29:日志文件的工作方式

    预写日志 (WAL) SQL Server 使用预写日志 (WAL),此日志确保在将关联的日志记录写入磁盘后再将数据修改写入磁盘.这维护了事务的 ACID 属性. SQL Server 维护当必须检索 ...

  6. SQL Server 2012笔记分享-52:可用性指标

    在电信和可靠性理论中,可用性是指: 系统,子系统,或者设备在开始一项任务时处在指定的可操作或可提交状态的程度,这项任务什么时候被用到是未知的,例如,是随机的.简单的说,可用性就是一个系统处在可工作状态 ...

  7. mysql数据库应用与开发姜桂洪 课后答案_数据库原理及应用(SQL Server 2012) 王丽艳版 课后习题第一至六章答案...

    有很多小伙伴说在网上很难找到这本教材的答案,临近期末复习关头,特将此文章共享到知乎,希望大家考试旗开得胜! 第一章 一.填空题 1.载体 2. 数据库 3.数据库 4.数据库 5.模式 6.例行程序 ...

  8. SQL Server 2012 Express LocalDB

    微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio ...

  9. SQL Server 2012如何打开2016的profiler文件

    作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/10980191.html 背景 在上星期,公司负责support的同事接到反馈 ...

最新文章

  1. 对于STM32F103三轴机械臂控制器进行基本功能测试-上下运动功能
  2. 如果MySQL事务中发生了网络异常?
  3. bzoj 2756 [SCOI2012]奇怪的游戏 二分+网络流
  4. Redis与Zookeeper实现分布式锁区别
  5. Hbase过滤器(Filter)汇总
  6. [C++11]指针空值类型nullptr
  7. 求序列第K大算法总结
  8. js Date对象总结
  9. 每日一题(40)—— 字符串常量
  10. 游戏入口点GameEntryPoint
  11. 找出矩阵中绝对值最大的元素及其位置_线性代数之——马尔科夫矩阵
  12. Tensorflow:可视化学习TensorBoard
  13. 三线压力传感器原理_压力传感器 压力传感器原理
  14. java 字符串排列组合_字符串排列组合问题
  15. DRM:Digital Rights Management数字版权加密保护技术
  16. Typora编辑数学公式
  17. 如何计算机闲置虚拟机算法_利用闲置计算机的最佳方法
  18. 温习古文之念奴娇·赤壁怀古
  19. 基于API的ArrayList集合之学习记录
  20. STM32 F446RET6多通道ADC采集

热门文章

  1. AMD64,linux-64bit,ARM64,linux-Aarch64和windows 64bit
  2. Hinton一作新论文:如何在神经网络中表示“部分-整体层次结构”?
  3. 【Brain】复旦类脑研究院:破解大脑奥秘,为实现人工智能自我思考奠定基础...
  4. 研究揭示动物社交欲望的神经机制
  5. Soft robotics:造仿生昆虫机器人柔性骨骼新技术,只需2小时,成本不到7块!
  6. 亚马逊首家“无人超市”系统存在bug?!开业当天,记者中途换装成功骗过摄像头...
  7. 二十大未来最有潜力的新材料(绝对经典值得收藏)
  8. 【重磅】马斯克遇终极麻烦:被起诉欺诈罪 或丢掉CEO职位 特斯拉暴跌约13%
  9. 集成电路:迎国产替代浪潮,设计领域机会凸显
  10. 报告:采用人工智能并不意味着成功