none
使用ETL后,SSISDB.mdf持续增长,如何缩减该数据库的大小? RRS feed

  • 问题

  • 有一台2008 R2的服务器,安装了2014的SQL Server,我们自己用SSIS开发部署了3个ETL作业在这台数据库服务器上,其中有一个ETL作业涉及的主包+子包共有15个左右。

    该项目持续运行了接近2年时间,前几天发现SSISDB.mdf、SSISDB.ldf文件大得撑爆了磁盘,但网上谷歌与百度均没有相关的解决方法。

    受此影响,数据库所在磁盘空间已小于3G,ETL作业完成取数每次要花将近1-2小时的时间(正常情况下3-5分钟),苦于无耐,将最大的ldf文件移除,释放了100多G空间。

    现在虽然能正常取数,但是新增的日志文件每天依然有将近100MB左右,而且SSISDB.mdf文件也有30多G大(该文件删除或改名会导致ETL执行失败)。

    恳请大神们,能够指导一下如何控制这两个文件的增长,或是如何缩减这两个文件的大小?

    PS:ETL作业是每隔2小时执行一次。


    看别人不顺眼,是自己修养不够

    2017年1月5日 1:05

答案

全部回复

  • 执行这个 SQL ,查下空间开销到底是空闲,还是实际占用

    ssisdb..sp_spaceused

    如果是实际占用,那么你需要查具体是那些表了,然后再分析原因

    如果是空闲空间,那么可能是数据文件增长设置不合理,默认是10%,你可以在数据库属性的数据文件里面设置一下

    2017年1月5日 1:26
  • 空间空间可以通过右键数据库中的收缩数据文件来回收
    2017年1月5日 1:27
  • 第一,如果你不定期备份数据库日志的话,就把数据库的Recovery Mode设置为Simple吧(当然最好是备份)。然后收缩日志文件。

    第二,检查一个叫“SSIS Server Maintenance Job”的Agent Job任务有没有正常运行。


    想不想时已是想,不如不想都不想。

    2017年1月5日 1:57
    版主
  • 任务执行一直很正常,另外恢复模式也设置了简单:


    看别人不顺眼,是自己修养不够

    2017年1月5日 5:45
  • 使用收缩文件,执行了但没什么效果,使用收缩数据库,直接就报异常了。

    我查了这个库的所有表大小,最大的有10几个G,全是包执行的历史记录:

    我在思考:这个表对于ETL作业来说,如果仅仅是为了保存历史记录,那么是否可以把里面的数据全部清空?以此来恢复ETL作业的执行效率。

    求大神给一个痛快的解决办法,再次感谢了。


    看别人不顺眼,是自己修养不够


    • 已编辑 熊林 2017年1月5日 6:01
    2017年1月5日 6:00
  • 执行历史记录你可以建个 Job 定时删除吧
    • 已标记为答案 熊林 2017年1月6日 1:48
    2017年1月5日 6:07
  • 收缩数据文件,设置最小收缩到 xx,界面有个评估值
    2017年1月5日 6:10
  • 在SSMS里面Integration Services Catalogs下面,SSISDB上点右键选属性,按照你的需求,修改Operations Log里面的内容。确保Clean Logs Periodically是True,把Retention Prriod (days)改小,Server-wide Default Logging Level按你需求改。


    想不想时已是想,不如不想都不想。

    2017年1月6日 4:29
    版主
  • 在SSMS里面Integration Services Catalogs下面,SSISDB上点右键选属性,按照你的需求,修改Operations Log里面的内容。确保Clean Logs Periodically是True,把Retention Prriod (days)改小,Server-wide Default Logging Level按你需求改。


    想不想时已是想,不如不想都不想。

    谢谢,我已经简单直接地解决了(https://ask.hellobi.com/blog/sfrost/5854),但你的这个方法故障再现时我会尝试,并将结果追加到我的博文里。

    PS:能把英文翻译成中文,也许我能更准确地理解你的意思。:)

    再次感谢。


    看别人不顺眼,是自己修养不够

    2017年1月6日 5:45
  • 那是SSMS界面上的文字,我随便翻译的话,不见得和你界面上的一致,反而可能造成误导。

    想不想时已是想,不如不想都不想。

    2017年1月9日 3:02
    版主
  • ETL 如果临时数据,不需要记录的话,可以结束ETL的时候 直接将这批临时数据表清空,下次插入数据还能速度更快
    2017年1月18日 3:01
  • ETL 如果临时数据,不需要记录的话,可以结束ETL的时候 直接将这批临时数据表清空,下次插入数据还能速度更快

    Excuse me???

    想不想时已是想,不如不想都不想。

    2017年1月20日 6:09
    版主