我有一个 msdb 数据库的索引维护作业来重建 msdb 数据库中的那些碎片索引。
但是我仍然发现msdb数据库中的一些备份相关表(例如backupmediafamily,backupset,backupfile)具有很高的碎片化。
在进一步检查后发现它被 Ola Index 维护命令跳过。
我的问题是如何让 ola 对索引进行碎片整理,而不是为 msdb 编写另一组索引维护?
我有一个 msdb 数据库的索引维护作业来重建 msdb 数据库中的那些碎片索引。
但是我仍然发现msdb数据库中的一些备份相关表(例如backupmediafamily,backupset,backupfile)具有很高的碎片化。
在进一步检查后发现它被 Ola Index 维护命令跳过。
我的问题是如何让 ola 对索引进行碎片整理,而不是为 msdb 编写另一组索引维护?
根本原因是msdb 中的那些表(例如backupmediafamily、backupset、backupfile)是MS Shipped Object。默认情况下,Ola 会跳过那些 MS Shipped 对象进行重建/重组。
MS 运送对象是指由内部 SQL Server 组件创建的对象。
解决方案:再添加 1 个参数 @MSShippedObjects = 'Y' 以启用 Ola 命令以对那些 MS 运送对象进行碎片整理。