1:当autoshrink开启时,如果手动收缩数据文件,会提示错误,因为此时有个后台线程正在收缩数据文件,那有没有办法kill掉这个后台线程呢?
答案是没有,只能关闭数据库选项autoshrink,然后一直等到,直到该线程自己结束!详细的说明在【这里】
2:能不能收缩数据文件?
看看收缩数据文件的缺点:详细的介绍在【这里】,现摘录如下:
a:收缩文件时会把该数据文件里的大的页号移到文件的开始处,会产生大量的文件io操作和CPU的使用率
c:收缩完毕后会产生大量的碎片,所以要进行索引的重建和重组,消除索引的碎片,结论是不要收缩数据文件!
但是在有些情况下是要收缩数据文件的,因为没有其他的选择:
a:监控的需要,导致磁盘空间报警不断,原因是数据文件或初始容量太大,或因业务增长导致数据文件持续增大,而后续删除或迁移了大表数据,能够收缩数据文件,
,该数据库一直有业务在跑,不可能建新的文件组,把现有的数据迁移过去,只能在凌晨时来收缩数据文件,这样对业务影响最小!
b:如果是建新的数据文件组,迁移表数据,这样工作量太大,还有涉及到操作的授权,增加了太多的工作量!
b:最后收缩时,新建一个JOB,在23:00以后收缩,每次收缩为100M,这样不会产生长时间的页锁,对于日常的操作也不会产生太大影响!