Sql-Server
DBCC SHRINKFILE 命令中哪些參數是預設參數?
我知道收縮不是一個好習慣,但如果我只執行 ie:
dbcc shrinkfile (filename,1024)
,這是預設的嗎?notruncate
還是truncateonly
?我在文件中沒有找到任何關於它的資訊。NOTRUNCATE 將分配的頁面從數據文件的末尾移動到文件前面的未分配頁面,無論是否指定 target_percent。文件末尾的可用空間不會返回給作業系統,文件的物理大小也不會改變。因此,如果指定了 NOTRUNCATE,則文件似乎不會收縮。
NOTRUNCATE 僅適用於數據文件。日誌文件不受影響。
FILESTREAM 文件組容器不支持此選項。
……
TRUNCATEONLY 將文件末尾的所有可用空間釋放給作業系統,但不執行文件內的任何頁面移動。數據文件僅收縮到最後分配的範圍。
如果使用 TRUNCATEONLY 指定,則忽略 target_size。
TRUNCATEONLY 選項不會移動日誌中的資訊,但會從日誌文件的末尾刪除不活動的 VLF。FILESTREAM 文件組容器不支持此選項。
預設行為是不做這些事情。該命令的這兩個修飾符都會
DBCC SHRINKFILE
更改預設行為。預設情況下,
DBCC SHRINKFILE
會將數據移動到文件的開頭(在數據文件中),然後從文件的末尾釋放可用空間(在日誌文件和數據文件中)。該
NOTRUNCATE
選項只會將數據移動到文件的開頭(在數據文件中),而不釋放文件末尾的可用空間。因為日誌文件不會在文件內移動數據,所以在事務日誌文件上使用此選項時沒有意義。該
TRUNCATEONLY
選項將僅從文件末尾釋放可用空間,而不移動數據文件中的任何數據。因為日誌文件不會在文件中移動數據,所以這實際上是日誌文件的預設行為。