數據庫中的每個文件都可以通過刪除未使用的頁的方法來減小。盡管數據庫引擎會有效地重新使用空間,但某個文件多次出現無需原來大小的情況后,收縮文件就變得很有必要了。數據和事務日志文件都可以減小(收縮)。可以成組或單獨地手動收縮數據庫文件,也可以設置數據庫,使其按照指定的間隔自動收縮。
文件始終從末尾開始收縮。例如,如果有個 5 GB 的文件,並且在dbcc shrinkfile 語句中將 target_size 指定為 4 GB,則數據庫引擎將從文件的最后一個 1 GB 開始釋放盡可能多的空間。如果文件中被釋放的部分包含使用過的頁,則數據庫引擎先將這些頁重新放置到文件的保留部分。只能將數據庫收縮到沒有剩余的可用空間為止。例如,如果某個 5 GB 的數據庫有 4 GB 的數據,並且在dbcc shrinkfile語句中將 target_size 指定為 3 GB,則只能釋放 1 GB。
操作命令:
現在我一個庫ASFCORE的日志文件已經達到30G了,數據文件為1G,如果要收縮日志文件,則執行如下命令即可!
- 查看數據庫的recovery_model_desc類型
SELECT NAME, recovery_model_desc FROM sys.databases
- 如果是FULL類型,修改為SIMPLE類型
ALTER DATABASE ASFCORE SET Recovery simple
- 收縮日志文件大小(單位是M)
DBCC SHRINKFILE (N'ASFCORE_log' , 10)
- 檢查日志文件名稱
USE ASFCORE
SELECT NAME, size FROM sys.database_files
- 恢復成FULL類型
ALTER DATABASE ASFCORE SET Recovery FULL