1. 程式人生 > >不能收縮 ID 為 %s 的資料庫中 ID 為 %s 的檔案,因為它正由其他程序收縮或為空。

不能收縮 ID 為 %s 的資料庫中 ID 為 %s 的檔案,因為它正由其他程序收縮或為空。

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。