SQLServer資料庫通常都不建議進行SHRINKFILE操作,因為SHRINKFILE不當會造成一定的性能問題。 但是當進行了某些操作(例如某個超大的日誌類型表轉成分區表切換了數據文件),資料庫某個文件組中的剩餘空間占了整個磁碟的很大一部分,而且磁碟空間已經吃緊的情況下,你也許會考慮收縮一下某個 ...
SQLServer資料庫通常都不建議進行SHRINKFILE操作,因為SHRINKFILE不當會造成一定的性能問題。
但是當進行了某些操作(例如某個超大的日誌類型表轉成分區表切換了數據文件),資料庫某個文件組中的剩餘空間占了整個磁碟的很大一部分,而且磁碟空間已經吃緊的情況下,你也許會考慮收縮一下某個數據文件。
收縮數據文件時,可以每次收縮一點點(例如每次5GB)來進行。
然而博主最近對某個資料庫進行資料庫收縮時碰到了標題所示的困擾。在DBCC SHRINKFILE (db_name , target_size)執行了幾次之後。
DBCC SHRINKFILE (db_name , target_size)
莫名出現瞭如下錯誤:
不能收縮 ID 為 6 的資料庫中 ID 為 1 的文件,因為它正由其他進程收縮或為空。
據網上的經驗,備份之後仍然不變,重啟也無效,嘗試重建某些表的索引,也無效。
但博主在嘗試將資料庫文件增加10MB,然後再次收縮資料庫的時候這個錯誤消失了。
ALTER DATABASE db_name MODIFY FILE ( NAME = file_name, SIZE = target_size )
後來從官方社區找到了答案:應該是我在進行DBCC SHRINKFILE的時候正好同時進行了備份操作(定時日誌備份)。
官方給的解決方法就是將要收縮的數據文件增加一點點,哪怕1MB。
本文地址:https://www.cnblogs.com/ajiangg/p/9968948.html