壓縮檔案
此主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 2012 中壓縮資料或記錄檔。
將資料頁面從檔案結尾移到靠近檔案前端的未使用空間,以壓縮資料並復原儲存空間。 當檔案結尾建立了足夠的可用空間後,檔案結尾的資料頁面便可取消配置並返回檔案系統。
本主題內容
開始之前:
限制事項
建議
安全性
使用下列方法壓縮資料或記錄檔:
SQL Server Management Studio
Transact-SQL
開始之前
限制事項
- 主要資料檔無法縮到小於 model 資料庫中主要資料檔的大小。
建議
- 為壓縮檔案所移動的資料可散佈至檔案中的任何可用位置。 如此會造成索引片段,並可能導致大範圍之索引搜尋的查詢效能變慢。 若要消除資料片段,可考慮在壓縮之後重建該檔案的索引。
安全性
權限
需要系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色中的成員資格。
[Top]
使用 SQL Server Management Studio
若要壓縮資料檔或記錄檔
在 [物件總管] 中,連接到 SQL Server Database Engine 的執行個體,然後展開該執行個體。
展開 [資料庫],然後以滑鼠右鍵按一下您要壓縮的資料庫。
指向 [工作],指向 [壓縮],然後按一下 [檔案]。
資料庫
顯示選取之資料庫的名稱。檔案類型
選取檔案的檔案類型。 可用的選擇為 [資料] 與 [記錄] 檔案。 預設的選取項目為 [資料]。 若選取不同的檔案群組類型,就會變更其他欄位中的選取項目。檔案群組
從與上面選取之 [檔案類型] 相關聯的檔案群組清單中選取檔案群組。 若選取不同的檔案群組,就會變更其他欄位中的選取項目。檔案名稱
從選取的檔案群組與檔案類型的可用檔案清單中選取檔案。位置
顯示目前選取之檔案的完整路徑。 無法編輯路徑,但是可以將它複製到剪貼簿。目前配置的空間
若要資料檔,則顯示目前配置的空間。 針對記錄檔,顯示從 DBCC SQLPERF(LOGSPACE) 的輸出計算而來的目前配置空間。可用空間
針對資料檔,顯示從 DBCC SHOWFILESTATS(fileid) 的輸出計算而來的目前可用空間。 針對記錄檔,顯示從 DBCC SQLPERF(LOGSPACE) 的輸出計算而來的目前可用空間。釋放未使用的空間
使檔案中未使用的空間釋出至作業系統,並壓縮檔案至最後配置的範圍,縮減檔案大小而不移動任何資料。 未嘗試重新放置資料列給未配置的頁面。釋放未使用的空間之前,先重新組織頁面
相當於執行指定目標檔案大小的 DBCC SHRINKFILE。 選取此選項時,使用者必須在 [將檔案壓縮為] 方塊中指定目標檔案大小。將檔案壓縮為
指定壓縮作業的目標檔案大小。 此大小不可小於目前配置的空間或大於配置給檔案的總範圍。 一旦變更焦點或按一下工具列上的任何按鈕時,輸入超過下限或上限的值將還原為下限或上限。將資料移轉至同一檔案群組中的其他檔案,以清空檔案
移轉來自指定之檔案的所有資料。 這個選項允許檔案使用 ALTER DATABASE 陳述式卸除。 此選項相當於執行具有 EMPTYFILE 選項的 DBCC SHRINKFILE。
選取檔案類型與檔案名稱。
(選擇性) 選取 [釋放未使用的空間] 核取方塊。
選取此選項,會讓檔案中任何未使用的空間釋出到作業系統,並壓縮文件到最後的配置範圍。 如此一來無需移動任何資料即可縮減檔案大小。
(選擇性) 選取 [釋放未使用空間之前重新組織檔案] 核取方塊。 若選取此選項,則必須在 [將檔案壓縮為] 中指定一個值。 根據預設,會清除此選項。
選取此選項,會讓檔案中任何未使用的空間釋出到作業系統,並嘗試將資料列重新放置到未配置的資料頁。
(選擇性) 輸入資料庫壓縮後資料庫檔案中最大的可用剩餘空間百分比。 允許值介於 0 和 99 之間。 只有當啟用 [釋放未使用空間之前重新組織檔案] 時,才能使用此選項。
(選擇性) 選取 [將資料移轉至同一檔案群組中的其他檔案,以清空檔案] 核取方塊。
選取此選項,使檔案群組中指定檔案內的所有資料都移到其他檔案內。 然後即可刪除空白檔案。 這個選項的作用與使用 EMPTYFILE 選項執行 DBCC SHRINKFILE 的作用相同。
按一下 [確定]。
[Top]
使用 Transact-SQL
若要壓縮資料檔或記錄檔
連接到 Database Engine。
在標準列中,按一下 [新增查詢]。
將下列範例複製並貼到查詢視窗中,然後按一下 [執行]。 下列範例會使用 DBCC SHRINKFILE,將 UserDB 資料庫中名為 DataFile1 之資料檔大小壓縮成 7 MB。
USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO
[Top]
請參閱
參考
DBCC SHRINKDATABASE (Transact-SQL)
sys.database_files (Transact-SQL)