SELECT
p.*,
bs.*
FROM #p AS p
OUTER APPLY
(
SELECT TOP (20)
bs.backup_start_date,
bs.backup_finish_date,
bs.backup_size,
bs.compressed_backup_size
FROM msdb.dbo.backupset bs
WHERE bs.name = p.ShrunkenHead
AND bs.type = 'D'
ORDER BY bs.backup_finish_date DESC
) AS bs
ORDER BY
p.ShrunkenHead,
p.StartTime DESC;
东风
默认跟踪包含有关所有 DBCC 命令的一些有限信息,包括收缩。使用Aaron Bertrand 的查询作为起点,我们可以确定哪个数据库被收缩,然后查看它最近的一些备份历史记录。
您需要做一些练习来解析 DBCC 命令,因为在跟踪中记录的数据库是命令运行的数据库,而不是运行的数据库。
请注意,我包含了跟踪中的一些列,我相信这些列对于收缩将始终为 NULL,但它也可能与我在跟踪中生成测试数据所做的事情有关,这使得它们不太有用。如果它们对您来说也为 NULL,那么您的陪伴很好。但我不能让它们更有用。
如果您需要帮助了解我的查询中的字符串解析做了什么,您可以在此处查看我的帖子。
一旦我们将它隐藏在#temp 表中,我们就可以查看数据库的完整备份历史记录。
这样,您就可以了解数据库备份大小是如何变化的。我包括常规尺寸和压缩尺寸,以防万一。
SQL Server 本身不会保留这种类型的历史记录。但是,您可以通过查询 msdb 中的备份历史表并比较收缩前后完整备份的大小来获得一些信息。