快照(SNAPSHOT)
我们在做BI项目的过程,一旦数据涉及到数据库,那么需要考量到的点就比较多。
1.如果数仓是在项目过程中搭建的,那么需要考虑高可用、灾备机制以及安全性问题;
2.如果我们只是需要连接数据库,那么需要考虑账号权限问题以及历史信息是否完整。
快照(Snapshot),是SQL Server中比较重要的一个功能,也是PowerBI欠缺的功能。
简单来说,快照就是在数据库中进行截图,保留数据库在截图时的数据状态,以备有突发灾备情况进行数据恢复。
创建快照语法
CREATE DATABASE Snapshotname ON --快照名称
(
Name =DataBaseName , --源数据库名称
FileName = 'C:\xx\xx' --快照文件地址
)
AS SNAPSHOT OF DataBaseName; --源数据库名称
使用实例
案例数据:
在白茶本机的数据库中,存在名为“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;
结果如下:
例子2:清除数据库BaiCha中的数据,使用快照进行数据恢复。
我们先对数据库BaiCha中的数据进行清空。
USE BaiCha
TRUNCATE TABLE ODS_BaiCha
TRUNCATE TABLE STG_BaiCha
SELECT *
FROM ODS_BaiCha
SELECT *
FROM STG_BaiCha
结果如下:
恢复代码语法:
RESTORE DATABASE DB_NAME --恢复的数据库名称
FROM DATABASE_SNAPSHOT = 'DB_SNAPSHOT_NAME' --需要使用的快照
输入如下代码:
USE master
RESTORE DATABASE BaiCha
FROM DATABASE_SNAPSHOT = 'BaiCha_Shot'
结果如下:
可以看到,数据库BaiCha已经恢复到快照的状态。
例子3:对快照进行删除。
快照的删除语法和删除DataBase的语法是一样的。
DROP DATABASE BaiCha_Shot
注意事项:
1.快照是只读的,一旦创建无法修改;
2.执行快照还原操作时,无法针对某张表进行还原,针对的是数据库整体;
3.快照一般与JOB搭配使用,进行数据备份。
项目应用:
1.维护历史数据,例如,汇率我们需要进行所有版本的留存;
2.对数据进行备份,防止某些失误造成的数据丢失。
这里是白茶,一个PowerBI的初学者。