我正在阅读有关 SQL Server 高可用性解决方案和灾难恢复以及 SQL Server 具有快照功能的可用资源的信息。从理论上讲,一切看起来都很美。
我还读到快照将在某个时间点复制数据库,您可以使用它来恢复数据库。
在这个答案中,有一条评论(Peter Schofield,2013 年)关于 SQL Server 快照没有支持,并且在开发环境中用于快速回滚很有用。
[...] 采用的最大障碍可能是 Management Studio 没有提供支持 [...]
[...] 这听起来像是在开发环境中理想地使用快照,仅用于快速脚本部署和快速回滚。[...]
我想知道快照在生产环境中是否真的有用。有哪些在生产中使用的示例,请包括有关您何时使用快照在生产系统上提供解决方案的个人示例。
主要目标是提供一些实际使用的示例,并通过这些示例为我和所有将阅读这篇文章的人提供一些有用的想法。
就我而言,我在生产环境中使用 SQL Server 2017 Enterprise Edition。
作为基于意见的问答,我怀疑这会结束,但这是我的两分钱。
我在生产环境中使用并看到过数据库快照,尽管很少见。
场景 A) 我们使用数据库快照来提供数据库的静态图像以用于报告(ETL 到数据仓库)目的。每天,脚本将在指定时间运行并创建快照以供报告使用。自创建之日起,该数据库在事务上是一致的,对此非常有用。
场景 B) 一项糟糕的维护工作,运行并对一个非常深的表进行了一些分析,然后开始删除适当的条目。我们在此过程开始时创建了一个快照,以防止发生任何阻塞。因此,维护工作被更改为从快照中获取“需要什么工作”的列表,然后删除快照,然后在实时数据库上“完成工作”。
数据库快照的用例适用于除 CHECKDB 之外的任何内容。SQL Server 在后台执行了一些锁隔离技巧,如果您需要对某些类型的操作进行快速而肮脏的修复,那么它是一个不错的选择。
他的意思是说你在 SSMS 中没有创建数据库快照的功能,你必须依靠 TSQL 命令来创建数据库快照。Create Database Snapshot官方文档中也提到了这个
我同意“支持”一词的使用并不完全清楚。应该是 SSMS 不允许创建数据库快照。
数据库快照“可能”在生产中使用,这完全取决于您想要从中获得什么以及它如何满足您的要求。在继续之前,请阅读数据库快照的限制。. Paul Randal对数据库快照可能出现的问题还有几点看法
静态数据库的生产快照对于准备完整的系统保障或“生产支持”数据库很有用。可以说,这些不是生产,但应该存在于类似生产的飞地中。避免了进行中的事务或参照完整性问题。例如,在表 B 后一小时卸载表 A 引起的问题。
在极端情况下,它们可以为实施或升级提供后备位置。用于研究、度量、分析、提供快照“立方体”的数据库不必遵循与“商业网络”示例相同的约定。