cmc*_*lan 3 sql-server best-practices snapshot temporal-tables sql-server-2016
我们有一个从上游数据仓库提供的数据集市,我们为外部各方生成报告。我有一个业务需求,要在每个月末保留数据库的状态,以确保结果的可重复性,以防我们被要求在同一时间段内进行更多分析。数据库 <100GB,大约 40-50 个表,没什么太疯狂的。
我知道 SQL 2016 SP1 中有一些有趣的新选项需要考虑。我在这里的目标不是快速/轻松访问前几个月,而是更多关于数据的完整性/不变性,但任何涵盖后者同时在前者中领先的解决方案都会赢得这一轮。
哪种方法在这里最有意义?
更新:截至 2019 年年中,Stretch Database 的启动成本相当高,仅用于 Azure 中的计算(额外存储)的起价约为 1800 美元/月,所以我想说这使得它无法实现更大的用例。
由于您正在处理单个数据库(或一组已知的数据库),因此只需创建一个 SQL Server 代理作业,将月末备份还原到“月末”数据库。
将作业安排在每个月的第一天早些时候进行。这项工作将简单地恢复“昨晚”的完整备份。您正在每晚进行备份,对吗?
为了保证月末数据的不变性,只需在恢复完成后将数据库标记为只读即可。像这样的东西:
ALTER DATABASE [xyz] SET READ_ONLY WITH ROLLBACK IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)
上述命令的详细信息在这里。