DBCC--SHRINKDATABASE


--DBCC SHRINKDATABASE

--收縮數據庫

--USAGE:

dbcc SHRINKDATABASE

(

    { 'database_name' | database_id | 0 }

    [ , target_percent ]

    [ , { NOTRUNCATE | TRUNCATEONLY } ]

)

    [ WITH NO_INFOMSGS ]

 

 

--DBCC SHRINKFILE

--收縮指定數據庫中特定文件

dbcc SHRINKFILE

(

    { 'file_name' | file_id }

    {

        [ , EMPTYFILE]

        | [ [, target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]

    }

)

    [ WITH NO_INFOMSGS ]

 

--NOTRUNCATE

--在指定或不指定target_percent 的情況下,將已分配的頁從數據文件的末尾移動到該文件前面的未分配頁。文件末尾的可用空間不會返回給操作系統,文件的物理大小也不會更改。因此,指定NOTRUNCATE 時,文件看起來未收縮。

--NOTRUNCATE 只適用於數據文件。日志文件不受影響。

--TRUNCATEONLY

--將文件末尾的所有可用空間釋放給操作系統,但不在文件內部執行任何頁移動。數據文件只收縮到最后分配的區。

--如果隨TRUNCATEONLY 指定了target_size,則會忽略該參數。

--TRUNCATEONLY 只適用於數據文件

 

 

--1. SHRINKFILE 並不獨占數據文件,且可以隨時終止,停止之前收縮的工作將被保留。

--2. SHRINKFILE 針對區做收縮,將使用的區前移,將不使用的區刪除,但不會合並區,也不合並和刪除區中的頁,因此當區中空頁過多或者頁面填充度較低時,SHRINKFILE並不能釋放過多的空間。

--3. 如果碎片過多,可以先重建索引后再做SHRINKFILE

 

  

--在SHRINKFILE后,需檢查文件的真實大小,可能文件已被收縮,但SHRINKFILE結果顯示沒有收縮

 

--由於sp_spaceused這個存儲過程依賴於SQLSERVER存儲在一些系統視圖里的空間使用統計信息來算出結果,但是SQLSERVER並不保證實時更新空間使用統計信息。尤其是數據庫剛剛發生大的變化之后,sp_spaceused的結果常常不准確

 

--參考:

--http://www.cnblogs.com/lyhabc/articles/3219563.html

--http://msdn.microsoft.com/zh-cn/library/ms189493.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM