Sql Server数据库快照初探

什么是快照

    数据库快照是 SQL Server 数据库(源数据库)的只读静态视图。换句话说,快照可以理解为一个只读的数据库。利用快照,可以提供如下好处:

  •     提供了一个静态的视图来为报表提供服务
  •     可以利用数据库快照来恢复数据库,相比备份恢复来说,这个速度会大大提高(在下面我会解释为什么)
  •     和数据库镜像结合使用,提供读写分离
  •     作为测试环境或数据变更前的备份,比如我要大批导入或删除数据前,或是将数据提供给测试人员进行测试前,做一个快照,如果出现问题,则可以利用快照恢复到快照建立时的状态

写入时复制(Copy On Writing)和稀疏文件(Sparse Flie)

    快照数据库的文件是基于稀疏文件(Sparse File),稀疏文件是NTFS文件系统的一项特性。所谓的稀疏文件,是指文件中出现大量0的数据,这些数据对我们用处并不大,却一样占用着磁盘空间。因此NTFS对此进行了优化,利用算法将这个文件进行压缩。因此当稀疏文件被创建时,稀疏文件刚开始大小会很小(甚至是空文件),比如图3所示的文件就是一个稀疏文件。虽然逻辑上占了21M,但文件实际上占了128KB磁盘空间。

使用快照其他一些需要考虑的因素

    1.快照数据库的安全设置继承源数据库的安全设置。也就是说能访问源数据库的用户或角色也能访问快照数据库,当然,因为快照数据库是只读的,所以无论任何角色或人都无法修改快照数据库。

    2.我们由文章前面图5看出,随着快照存在的时间越来越长,快照会不断增长。所以推荐在快照达到源数据库大小30%之前,重新创建快照。

    3.由于快照会拖累数据库性能,所以数据库不宜存在过多快照。

创建数据库快照  

--检索数据库相关信息
use DBTest
go
execute sp_helpfile
go

---创建DBTest数据库快照
create database DBTest_Snap on
(name=DBTest,filename='D:\SQLbak\DBTest_Snap.snap')
as snapshot of DBTest;
go


--查看sys.databases目录视图source_database_id列,为null则为常规数据库,不为null则是数据库快照的源数据库的ID
select * from sys.databases

--动态管理视图sys.dm_io_virtual_file_stats查看数据库快照大小
SELECT database_id,size_on_disk_bytes 
FROM sys.dm_io_virtual_file_stats(DB_ID('DBTest_Snap'),1)


--还原DBTest数据库到DBTest_Snap数据库快照.(错误:3137)如果源数据库有多个数据库快照,尝试还原到某一个数据库快照
use master
go
restore database DBTest
from database_snapshot='DBTest_Snap'
go

--删除数据库快照与删除常规数据库一样
Drop database DBTest_Snap

--测试执行大量数据时先做一次数据库快照,以便误操作时恢复
create database DBTest_Snap_am
ON ( NAME = DBTest_Snap1, FILENAME= 'D:\SQLbak\DBTest_Snap1.snap'),
   ( NAME = DBTest_Snap2, FILENAME= 'D:\SQLbak\DBTest_Snap2.snap')
AS SNAPSHOT OF DBTest
go

使用数据库快照一些常规用途
  1.不阻塞生产/源数据库的情况下生成报告

  2.维护历史数据

  3.在数据库镜像上执行报告

  4.从用户或者管理错误操作后恢复

  5.还原源数据库到一个更早的时间,使用数据库快照恢复源数据库

转载于:https://www.cnblogs.com/aaronguo/p/3049795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PB SQL Server 数据库同步是一种将PowerBuilder应用程序的数据与SQL Server数据库中的数据进行同步的技术。 在PowerBuilder中,可以通过使用DataWindows和DataStores来访问和操作数据库。而PB SQL Server 数据库同步的目的是确保PowerBuilder应用程序的数据与SQL Server数据库中相应的数据保持同步。 PB SQL Server 数据库同步的步骤一般包括以下几个方面: 1. 配置数据库连接:首先需要在PowerBuilder应用程序中配置连接到SQL Server数据库的相关信息,如服务器地址、数据库名称、用户名和密码等。 2. 创建DataWindow对象:根据需要同步的数据表,在PowerBuilder中创建相应的DataWindow对象,并设置查询语句和列与字段的对应关系。 3. 同步数据:通过调用DataWindow对象的Retrieve方法,可以从SQL Server数据库中获取最新的数据。然后,可以在应用程序中使用这些数据进行相应的操作,如显示、修改、删除等。 4. 更新数据:当在应用程序中修改了数据后,可以通过调用DataWindow对象的Update方法将修改的数据保存回SQL Server数据库。 需要注意的是,为了确保同步的准确性,应该遵循一定的同步策略。例如,可以根据业务需求定期或实时地进行数据的同步,以保证数据的一致性。 总的来说,PB SQL Server 数据库同步是一种将PowerBuilder应用程序的数据与SQL Server数据库进行同步的技术,通过配置数据库连接、创建DataWindow对象、同步数据和更新数据等步骤,可以实现数据的同步和一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值