数据库快照是什么?3大应用场景解析:报表服务、快速恢复与读写分离

网站建设 厦门萤点网络科技 2025-11-28 00:08 56 0
简介数据库快照 数据库快照,正如其名称所示那样,是数据库在某一时间点的视图。是SQL 在2005之后角型导载国整跑的版本引入的特性。快照的应用场景比较多,但快照设计最开始的目的是为了报表服务。来自比如我需要出2011的资产负债表,这念地建令...

简介数据库快照

数据库快照,正如其名称所示那样,是数据库在某一时间点的视图。是SQL 在2005之后角型导载国整跑的版本引入的特性。快照的应用场景比较多,但快照设计最开始的目的是为了报表服务。来自比如我需要出2011的资产负债表,这念地建令连希需要数据保持在2011年12月360问答31日零点时的状态,则利用快照可以实现这一点。快照还可以和镜像结合来达到读方写分离的目的。下面我们来看什么是快照。

什么是快照

数据库快照是 SQL 数据库(源数据库)的只读静态视图。换句话说,快照可以理解为一个只映都纸令仅案音似探总读的数据库。利用快照,可以提供如下好处:

提供了一个静态的视图来为报表提供服务

可以利用数据库快照来恢复数据库,相比备份恢复来完技德某婷高色合立说,这个速度会大大提高(在下面我会解释为什么)

和数据库镜像结合使用,提供读写分离

作为测试环境或数据变更前的备份,比如我要大批法导入或删除数据前,或是将数据提供给测试人员进行测试前,做一个快照,如果出现问题,则可以利用快照恢复到快照建立时的状态

SQL 视图

什么是视图?

视图是一个虚拟的表,内容源于查询的结果集。只有当视图上建立了索引后,才会具体化。

视图可以筛选和处理数据,而不是直接访问基础表。如:创建一个视图,只展示源表中的几列数据,无需授予用户访问基础表的权限,取而代之的是授予视图访问权限。

为什么用视充宁述信款利试数蛋息假图?

1、如果是比较复杂的多表法联查,可以将这些复杂的语句放在视图中完成,而我们只需要使用简单的语句查询视图即可。

2、保护基础表,敏感列无法被检索出。

3、对视图添加索引,可以提高效率。

创建视图

1、可以使用SSMS工具创建, 视图->新建视图->选表 选列 ->输入名字保存即可。

2、使用T-SQL创建

if (selec甚县领混些响相本t * from where name = '') 春啊答光居它且坚停令--如果存在删除 drop vie编稳城量w go v好比游须右证轮谁采井iew --创建视图 as 学稳有脸视张么支阶左业设号=id,姓名=name,害继第温年龄=age from go * from

关于order by

if (sel微县入周例掉选谈培ect * from where n晚号须农之料酸有蛋ame = '') --如果存在删除 drop view go view newVi不凯会还触形什备景财资ew --创建视图 as top 10 学号=id,姓名=name,年龄=age from order by id desc --如果使用order关键字 则必须指定top go * from

修改视图

SQL Server快照特性_用户权限数据库设计_数据库快照用途

alter view as top 20 * from order by id desc --如果使用order关键字 则必须指定top go

更新架构

--刚刚修改的视图用的是 * 查询的是全部列 --此时修改基础表架构 alter table add mail (20) --这时源表已经更新架构,但是视图并没有改变 需要调用系统存储过程更新一下 EXEC --这时 新的列才会被加进来

更新视图

对视图进行增、删、改操作,其实就是修改源表。但是由于诸多限制(如由多表联查出的视图,只检索出个别字段,但是插入的时候有些源表上的值是非空的就会出问题),一般不修改视图。

所以更新源表即可更新视图。

数据库快照

数据库快照是某一时间点的源数据库的只读静态视图,可以用来恢复数据库。

使用数据库快照必须与源数据库在相同的服务器实例,并且不能对源数据库进行删除、分离、或还原操作。

使用数据库快照

--源表中数据 use webDB go * from

用户权限数据库设计_数据库快照用途_SQL Server快照特性

if ( * from sys. where name = '') drop --存在则删除 go --创建数据库快照 on ( name = webDB, ='d:\***.ss' --注意后缀.ss ) --如果有多个文件需要一一指出 as of webDB go

用户权限数据库设计_SQL Server快照特性_数据库快照用途

--修改源数据库数据 use webDB go set where id = 10--查询源数据库数据 * from where id = 10--查询快照数据 use go * from where id = 10

SQL Server快照特性_数据库快照用途_用户权限数据库设计

修改源数据库,快照数据库并未发生改变。

--修改表架构 alter table webDB.dbo. add (20) * from webDB.dbo. --快照中依然没有 * from .dbo.--删除源数据库表 drop table webDB.dbo.--查询数据库快照该表 依然存在 * from .dbo.

从快照恢复数据到快照创建时刻

webDB from ='' go * from webDB.dbo. --修改的值被改回 * from webDb.dbo. --被删除的表 改回

以上得知:任何创建快照之后的修改数据都将被改回!