3

【译】sql server:包含表dbo.sysmaintplan-m6米乐安卓版下载

原创 沐言倾心 2022-04-13
1818

原文地址:
原文作者:stéphane haby

今天,在一个新客户现场,我看到msdb数据文件超过4gb。有点太大了…

  • 为了查看是哪张表占用这么大的空间,我们可以在ssms中选择msdb数据库,右键点击->报告(reports)->标准报告(standards reports)->按"热门表"划分的磁盘使用情况(disk usage by top tables)
    图片.png

  • 如上图可见,表dbo.sysmainplan_logdetail是大小为2.3gb且包含13205条记录的大表。

此表是通过ssms中管理菜单中的维护计划向导生成的维护计划的日志。更多信息请点击这里:。

在谷歌搜索如何清除此表之后,发现很多文章描述了对表进行的截断操作的方法。
我不确定这是不是能解决此问题的好方法…

  • 根据我的经验,要清除msdb中的日志或历史记录,我们需要一个存储过程,比如sp_delete_backuphistorysp_purge_jobhistory
  1. 在数据库msdb中的所有存储过程中搜索,最后找到“sp_maintplan_delete_log”
  2. 我也在微软文档中搜索,在找到的只有下图中标注的这句话。
    图片.png
  3. 为了清理此表dbo.sysmainplan_logdetail,我在带有时间戳的循环中使用此存储过程,不填充t-log文件,只保留最后30天:
declare @date datetime, @sql nvarchar(1000)
 
set @date = convert(nvarchar(10), getdate()-720 , 21)
 
while @date <= convert(nvarchar(10), getdate()-30 , 21)
 
            begin
 
                        set @sql = n'exec [msdb].[dbo].[sp_maintplan_delete_log]  @oldest_time = {ts'''   convert(nvarchar(23), @date , 21)   n'''}'
 
                        exec(@sql)
 
                        set @date = @date  30
 
                        print @sql
 
            end

图片.png
4. 上图中可以看到,在2020年1月之前有5709个记录…😳
清理后,表dbo.sysmainplan_logdetail的记录数从13205减少到152,且文件大小从2.3gb减小到35mb,如下图:
图片.png
为了完整起见,最好的做法是执行与microsoft文档中相同的操作,即使用存储过程sp_purge_jobhistory,sp_delete_backuphistory。
我还建议创建一个日常任务来清理维护计划中所有的历史记录。😎

最后修改时间:2022-05-09 10:36:29
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

网站地图