解决方法
(我最初问的是一个常规问题,但后来发现了正确的方法 – 感谢BrentO)
没有永不.
我现在已经多次在ServerFault上遇到过这个问题,希望通过一些好的建议来吸引更多的观众.如果人们对这种做事方式不屑一顾,那么我就会很乐意将其删除.
自动缩小是一种非常常见的数据库设置.这似乎是一个好主意 – 从数据库中删除额外的空间.有很多“非自愿的DBA”(想想TFS,SharePoint,BizTalk,或者只是常规的旧sql Server),他们可能不知道自动收缩是非常邪恶的.
虽然在Microsoft我曾经拥有sql Server存储引擎并试图删除自动收缩功能,但它必须保持向后兼容性.
为什么自动收缩如此糟糕?
数据库可能会再次增长,为什么要缩小它?
>收缩 – 增长 – 收缩 – 增长会导致文件系统级别碎片并占用大量资源.
>你无法控制它什么时候开始(即使它是常规的)
>它使用了大量资源.在数据库中移动页面会占用cpu,大量IO,并生成大量事务日志.
>这是真正的踢球者:数据文件缩小(无论是否自动)会导致大量索引碎片,从而导致性能不佳.
我曾经做了一篇博客文章,其中有一个示例sql脚本,它显示了它引起的问题并更详细地解释了一下.请参阅Auto-shrink – turn it OFF!(我的博客上没有广告或垃圾).不要因缩小日志文件而感到困惑,这有时是必要且必要的.
所以你自己帮忙 – 查看你的数据库设置并关闭自动缩小功能.出于完全相同的原因,您也不应该缩减维护计划.把这个词传播给你的同事.
编辑:我应该添加这个,由第二个答案提醒 – 有一种常见的误解,即中断收缩操作会导致损坏.不,不会.我曾经拥有sql Server中的收缩代码 – 它会回滚当前正在执行的页面移动,如果被中断的话.
希望这可以帮助!