alt

快照(SNAPSHOT)

我们在做BI项目的过程,一旦数据涉及到数据库,那么需要考量到的点就比较多。

1.如果数仓是在项目过程中搭建的,那么需要考虑高可用、灾备机制以及安全性问题;

2.如果我们只是需要连接数据库,那么需要考虑账号权限问题以及历史信息是否完整。

快照(Snapshot),是SQL Server中比较重要的一个功能,也是PowerBI欠缺的功能。

简单来说,快照就是在数据库中进行截图,保留数据库在截图时的数据状态,以备有突发灾备情况进行数据恢复。

创建快照语法

CREATE DATABASE Snapshotname ON  --快照名称
(
   Name =DataBaseName ,  --源数据库名称
   FileName = 'C:\xx\xx'  --快照文件地址
)
AS SNAPSHOT OF DataBaseName;  --源数据库名称

使用实例

案例数据:

alt

在白茶本机的数据库中,存在名为“BaiCha”的数据库,存在名为“ODS_BaiCha”和“STG_BaiCha”的两张表。

例子1:为数据库BaiCha创建快照。

CREATE DATABASE BaiCha_Shot ON
(
   Name = BaiCha,
   FileName = 'C:\SQL Server\BaiCha_Shot.ss'
)
AS SNAPSHOT OF BaiCha;

结果如下:

alt alt

例子2:清除数据库BaiCha中的数据,使用快照进行数据恢复。

我们先对数据库BaiCha中的数据进行清空。

USE BaiCha
TRUNCATE TABLE ODS_BaiCha
TRUNCATE TABLE STG_BaiCha
SELECT *
FROM ODS_BaiCha
SELECT *
FROM STG_BaiCha

结果如下:

alt

恢复代码语法:

RESTORE DATABASE DB_NAME  --恢复的数据库名称
FROM DATABASE_SNAPSHOT = 'DB_SNAPSHOT_NAME'  --需要使用的快照

输入如下代码:

USE master
RESTORE DATABASE BaiCha
FROM DATABASE_SNAPSHOT = 'BaiCha_Shot'

结果如下: alt alt

可以看到,数据库BaiCha已经恢复到快照的状态。

例子3:对快照进行删除。

快照的删除语法和删除DataBase的语法是一样的。

DROP DATABASE BaiCha_Shot

alt

注意事项:

1.快照是只读的,一旦创建无法修改;

2.执行快照还原操作时,无法针对某张表进行还原,针对的是数据库整体;

3.快照一般与JOB搭配使用,进行数据备份。

项目应用:

1.维护历史数据,例如,汇率我们需要进行所有版本的留存;

2.对数据进行备份,防止某些失误造成的数据丢失。

alt alt

这里是白茶,一个PowerBI的初学者。