2012-03-23 26 views
0

我最近從一批生產數據庫中刪除了表數據,並且我使用SSMS中的「收縮文件」功能收縮了數據庫文件。一些數據庫將縮小超過50GB。我注意到這個過程需要很長時間才能完成,並且在此過程正在運行時沒有取消按鈕。我通過RDP遠程連接到所有數據庫服務器,並且不能保證在修剪過程中它們不會被重新啓動。在SSMS中斷數據庫文件收縮過程2008

如果收縮進程正在運行並且服務器重新啓動,我會遇到數據庫損壞嗎?

回答

2

我認爲這完全取決於停電時哪些頁面在運動。你可能會出來,但我肯定不想在這裏擲骰子,如果它是我的數據。

您可以使用DBCC SHRINKFILE命令一次收縮少量文件,而不是僅運行單個收縮操作(尤其是使用此UI而不是使用UI)。由於此選項允許您設置目標大小,因此您可以以短脈衝重複運行該命令。

雖然這減少了腐敗的風險,但它可能會導致其他危害,例如日益分散。您可能會先從重建索引中獲得更好的里程,然後然後運行truncateonly的收縮文件。這將清除文件的「結尾」,重建後大概會將所有數據一起移到文件的開頭。

甚至更​​好的解決方案可能是在自己的文件組中添加第二個數據文件,將所有索引重新創建到新文件組,然後縮小主文件將其減少到只是系統/元數據對象的大小住在那裏。