使用 資料庫收縮功能 實現多個資料檔案的合併

2022-08-03 09:15:12 字數 2023 閱讀 2358

收縮使用者資料庫

sql server 2000採取預先分配空間的方法來建立資料庫的資料檔案或者日誌檔案,比如資料檔案的空間分配了100mb,而實際上只占用了50mb空間,這樣就會造成儲存空間的浪費。為此,sql server 2000提供了收縮資料庫的功能,允許對資料庫中的每個檔案進行收縮,刪除已經分配但沒有使用的頁。

不能將整個資料庫收縮到比其原始大小還要小。因此,如果資料庫建立時的大小為 10 mb,後來增長到100mb,則該資料庫最小能夠收縮到10mb(假定已經刪除該資料庫中所有資料)。不能在備份資料庫時收縮資料庫,也不能在收縮資料庫時建立或備份資料庫。

sql server 2000支援對資料庫實行自動收縮和手工收縮。在如圖4.38所示的資料庫屬性的【選項】選項卡中選擇【自動收縮】核取方塊將實現自動收縮。

sql server 2000

伺服器每

30分鐘檢查資料庫的空間使用情況。如果發現大量閒置的空間,就會自動縮小資料庫的檔案大小

。圖4.38  設定自動收縮功能

利用企業管理器或dbcc shrinkdatabase 和 dbcc shrinkfile 語句可以完成手工收縮操作。

不論是收縮資料檔案還是日誌檔案,都會確實減少物理檔案的大小,兩者不同之處如下。

資料檔案可以作為檔案組或單獨地進行手工收縮。日誌檔案收縮分別考慮每個檔案,基於整個日誌檔案進行收縮。日誌檔案的收縮將刪除非活動的vlf。

檔案的收縮操作始終從檔案末端開始反向進行。例如,如果要將乙個5gb的檔案收縮到4gb,則sql server 2000將從檔案的最後乙個1gb開始釋放盡可能多的空間。如果檔案中被釋放的部分包含使用過的頁面,則sql server 2000會將這些頁面重新定位到保留的部分。

只能將資料庫收縮到沒有剩餘的可用空間為止。例如,某個5gb的資料庫已經有4gb的資料,如果指定將資料庫收縮到3gb,則實際上只會釋放1gb的空間。

如果收縮操作無法收縮日誌檔案中的所有空間,系統將反饋資訊,指出必須執行什麼操作以釋放更多符合條件的空間。

(1)在【企業管理器】的管理目標導航【樹】下選擇剛建立的資料庫mydatabase單擊滑鼠右鍵,在出現的快捷選單中選擇【所有任務】/【收縮資料庫】選項。

(2)出現如圖4.39所示的【收縮資料庫】介面。

q在【資料庫大小】區域可以檢視【已經分配的空間】和【可用的空間】,這是決定是否進行收縮的重要依據。

q在【收縮操作】區域的【收縮後檔案中的最大可用空間】文字框中設定收縮資料庫後資料檔案中的最大可用空間百分比。選擇【在收縮前將頁移到檔案起始位置】指定在收縮資料庫前將頁移到檔案的起始位置,選擇該選項可能會影響效能。

q在【排程】區域選擇【根據排程收縮資料庫】核取方塊,單擊

按鈕可以設定自動收縮資料庫的時間。

圖4.39  【收縮資料庫】介面

圖4.40  【收縮檔案】介面

(3)在圖4.39中的【收縮檔案】區域單擊

按鈕出現如圖4.40所示的【收縮檔案】介面,可以對資料檔案或日誌檔案設定更精細的收縮策略。在【資料庫檔案】下拉列表框中可以選擇要收縮的資料檔案或者日誌檔案。在【收縮操作】區域可以設定檔案的具體收縮操作,包括是否截斷、壓縮頁以及收縮後的檔案大小等。在【延遲收縮】區域可以設定自動收縮的時間。完成設定後單擊

按鈕。收縮資料庫可以刪除已經分配但尚未使用的頁,從而更好地利用儲存空間。與收縮相對應的是擴充資料庫,即修改資料庫的屬性即可。收縮後的可用空間應該留有一定的空閒空間,這樣當資料發生更改時不必額外分配空間。

6 使用收縮功能實現多個資料檔案的合併

在進行收縮時,選擇要進行收縮的資料檔案,選擇』清空檔案『項,即可將該資料檔案中的資料合併到剩餘的資料檔案中,如果是選擇的是日誌檔案則選擇』收縮檔案至『輸入0m即可。這樣就可以將這些檔案進行合併。在此之後,雖然剛才合併的各個檔案的資料已經歸到乙個資料檔案中,但是原來的資料檔案還存在,這時候直接刪除時不行的,需要通過在』屬性『選項下的『資料檔案』和『事務日誌』處對其進行刪除操作。如下圖:

收縮資料庫

sql 2008 右擊要清除日誌的資料庫 選擇 屬性 在資料庫屬性中 選擇 選項 在右邊 恢復模式 下拉列表框中 選擇 簡單 單擊確定 返回 右擊要清除日誌的資料庫 選擇 任務 收縮 資料庫 單擊確定 完成收縮 指令碼 use master goalter database dnname set r...

收縮資料庫

顯示當前資料庫的空間使用情況 exec sp spaceused 顯示表的空間使用 exex sp spaceused objname wct updateusage true 顯示整個伺服器中所有資料庫的日誌使用情況 dbcc sqlperf logspace 收縮資料庫 dbcc shrinkd...

資料庫 收縮

引用 資料庫中的每個檔案都可以通過刪除未使用的頁的方法來減小。儘管資料庫引擎會有效地重新使用空間,但某個檔案多次出現無需原來大小的情況後,收縮檔案就變得很有必要了。資料和事務日誌檔案都可以減小 收縮 可以成組或單獨地手動收縮資料庫檔案,也可以設定資料庫,使其按照指定的間隔自動收縮。檔案始終從末尾開始...