SQLServer資料庫收縮相關知識筆記

2021-10-22 16:35:05 字數 1846 閱讀 9906

sql server 資料庫採取預先分配空間的方法來建立資料庫的資料檔案或者日誌檔案,比如資料檔案的空間分配了300mb,而實際上只占用了20mb空間,這樣就會造成磁碟儲存空間的浪費。可以通過資料庫收縮技術對資料庫中的每個檔案進行收縮,刪除已經分配但沒有使用的頁。從而節省伺服器的儲存的成本。

官方解釋:收縮資料檔案通過將資料頁從檔案末尾移動到更靠近檔案開頭的未占用的空間來恢復空間。在檔案末尾建立足夠的可用空間後,可以取消對檔案末尾的資料頁的分配並將它們返回給檔案系統。

收縮後的資料庫不能小於資料庫最初建立時指定的大小。 或是上一次使用檔案大小更改操作(如 dbcc shrinkfile)設定的顯式大小。

比如:如果資料庫最初建立時的大小為 10 mb,後來增長到 100 mb,則該資料庫最小只能收縮到 10 mb,即使已經刪除資料庫的所有資料也是如此。

不能在備份資料庫時收縮資料庫。 反之,也不能在資料庫執行收縮操作時備份資料庫。

介紹:收縮指定資料庫中的資料檔案大小。

語法格式:

dbcc shrinkdatabase

( database_name [ , target_percent ]

[ , ]

)

引數說明:

介紹:收縮當前資料庫的指定資料或日誌檔案的大小,或通過將資料從指定的檔案移動到相同檔案組中的其他檔案來清空檔案,以允許從資料庫中刪除該檔案。檔案大小可以收縮到比建立該檔案時所指定的大小更小。這樣會將最小檔案大小重置為新值。

語法格式:

dbcc shrinkfile 

(

] ]}

)[ with no_infomsgs ]

引數說明:

例如,如果建立乙個10mb 的檔案,然後在檔案仍然為空的時候將檔案收縮為2 mb,預設檔案大小將設定為2 mb。這只適用於永遠不會包含資料的空檔案。

-- 將testdb資料庫中的testdb檔案的大小收縮到20mb。

use testdb ;

godbcc shrinkfile (testdb, 20) ;

-- 將減小 userdb 使用者資料庫中資料檔案和日誌檔案的大小,

-- 以便在資料庫中留出 10% 的可用空間

dbcc shrinkdatabase (testdb, 30);

-- 清理資料庫日誌檔案為2m

use master

alter database testdb set recovery ****** with no_wait

alter database testdb set recovery ****** --簡單模式

use testdb

dbcc shrinkfile (n'testdb_log' , 2, truncateonly)

--設定壓縮後的日誌大小為2m,可以自行指定

use master

alter database testdb set recovery full with no_wait

alter database testdb set recovery full --還原為完全模式

it技術分享社群

個人部落格**:

文章推薦程式設計師效率:畫流程圖常用的工具

遠端辦公:常用的遠端協助軟體,你都知道嗎?

硬體:斷路器、接觸器、繼電器基礎知識

SQLServer收縮資料庫

以下語句用於設定資料庫定時自動收縮資料庫 use master gosp dboption testdb,autoshrink true gouse testdb gocheckpoint go 清空日誌語句 dump transaction testdb with no log 截斷事務日誌 ba...

sql server收縮資料庫日誌

alter database testdbname set recovery 將 恢復模式 設定為 簡單 gouse testdbname godbcc shrinkfile n testdbname log 1 truncateonly 收縮日誌檔案大小到1m gouse testdbname g...

收縮sql server資料庫日誌

專案中,可能資料庫 sql server資料庫 日誌太多,佔了很多磁碟空間,可以通過收縮資料庫日誌,減少日誌檔案大小。下面以northwind資料庫為例 1.把資料庫的恢復模式設定為 簡單模式 選擇northwind資料庫 右鍵 屬性,在彈出的資料庫屬性視窗中,選擇 選項 設定恢復模式為 簡單 點選...