我已经为 MS SQL Server 2022 设置了差异备份,并且想知道数据库中的每个表对差异备份大小的贡献有多大。
下面的页面显示了如何获取数据库级别的信息,但我想查看自上次完整备份以来每个表级别的更改范围百分比。
有没有办法做到这一点?
我想知道哪些表正在更新以及它们为差异备份贡献了多少字节。当然,这个数字会随着时间的推移而增长,直到进行新的完整备份。
我已经为 MS SQL Server 2022 设置了差异备份,并且想知道数据库中的每个表对差异备份大小的贡献有多大。
下面的页面显示了如何获取数据库级别的信息,但我想查看自上次完整备份以来每个表级别的更改范围百分比。
有没有办法做到这一点?
我想知道哪些表正在更新以及它们为差异备份贡献了多少字节。当然,这个数字会随着时间的推移而增长,直到进行新的完整备份。
SQL Server 不会直接跟踪这一点,但您有几个选择。
选项 1,痛苦且不准确:从您链接到的帖子中的 DBCC 页面技术开始,但是对于您检查的每个页面,您还需要查看 DBCC PAGE 内容,通过加入来查看它属于哪个 objectid sys.all_objects。写起来会很痛苦,而且运行起来也需要相当长的时间。更糟糕的是,它不准确,因为当您的查询运行时,页面实际上可能会切换到不同的对象。例如,如果一个表被删除,某些页面可能会被新分配给其他某个对象,并且您的跟踪将报告“错误”对象导致差异。
选项 2,快速但不准确:使用索引 DMV 来跟踪哪些对象获得最多的写入。我个人最喜欢的方法是开源sp_BlitzIndex。运行这个:
这将为您提供哪些索引获得最多的写入(更改最多)。但是,这也不一定是影响差异备份大小的原因,因为:
我仍然会从这个选项开始,因为它会给你一个粗略的想法,很快,而且听起来这就是你所追求的。(听起来你不想在选项 1 中编写查询,而且我当然不会免费为你这样做,哈哈哈哈。)