壓縮資料庫

此主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,SQL Server 2012 中壓縮資料庫。

將資料頁面從檔案結尾移到靠近檔案前端的未使用空間,以壓縮資料並復原儲存空間。 當檔案結尾建立了足夠的可用空間後,檔案結尾的資料頁面便可取消配置並返回檔案系統。

本主題內容

  • 開始之前:

    限制事項

    建議

    安全性

  • 使用下列方法壓縮資料庫:

    SQL Server Management Studio

    Transact-SQL

  • 待處理:壓縮資料庫之後

開始之前

限制事項

  • 資料庫的大小不得小於資料庫的大小下限。 大小下限是最初建立資料庫時所指定的大小,或利用檔案大小變更作業 (如 DBCC SHRINKFILE) 來設定的最後一個明確大小。 例如,如果資料庫最初建立時為 10 MB 的大小,而後擴充到 100 MB,則該資料庫最多只能縮小到 10 MB,即使該資料庫中的所有資料都已刪除,也是如此。

  • 資料庫在備份時不能進行壓縮。 相反地,當資料庫上正在進行壓縮作業時,也不能對其進行備份。

  • 遇到 xVelocity 記憶體最佳化的資料行存放區索引時,DBCC SHRINKDATABASE 將會失敗。 遇到資料行存放區索引之前完成的工作將會成功,因此資料庫可能會較小。 若要完成 DBCC SHRINKDATABASE,請在執行 DBCC SHRINKDATABASE 前停用所有資料行存放區索引,然後重建資料行存放區索引。

建議

  • 檢視資料庫中目前的可用 (未配置) 空間量。 如需詳細資訊,請參閱<顯示資料庫的資料和記錄空間資訊

  • 當您計畫壓縮資料庫時,請考量下列資訊:

    • 壓縮作業在截斷資料表或卸除資料表等產生大量未用空間的作業之後最有效。

    • 大部分資料庫都需要一些可用空間來執行每天的例行作業。 如果您反覆壓縮資料庫,發現資料庫再次增長,就表示例行作業需要被壓縮的空間。 在這些情況之下,反覆壓縮資料庫是一項會造成浪費的作業。

    • 壓縮作業不會保留資料庫中索引的片段狀態,它通常會使片段增加到某個程度。 這就是不要反覆壓縮資料庫的另一個原因。

    • 除非您有特定的需求,否則請不要將 AUTO_SHRINK 資料庫選項設定為 ON。

安全性

權限

需要系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色中的成員資格。

搭配回到頁首連結使用的箭頭圖示[回到頁首]

使用 SQL Server Management Studio

若要壓縮資料庫

  1. [物件總管] 中,連接到 SQL Server Database Engine 的執行個體,然後展開該執行個體。

  2. 展開 [資料庫],然後以滑鼠右鍵按一下您要壓縮的資料庫。

  3. 指向 [工作][壓縮],然後按一下 [資料庫]

    • 資料庫
      顯示選取之資料庫的名稱。

    • 目前配置的空間
      顯示選取之資料庫的總計已使用和未使用的空間。

    • 可用空間
      顯示選取之資料庫的記錄檔和資料檔中可用空間的總和。

    • 釋放未使用的空間之前,先重新組織檔案
      選取這個選項相當於執行 DBCC SHRINKDATABASE 指定目標百分比選項。 清除此選項相當於搭配 TRUNCATEONLY 選項執行 DBCC SHRINKDATABASE。 依預設,開啟對話方塊時並不會選取此選項。 如果選取此選項,使用者必須指定目標百分比選項。

    • 壓縮後檔案的最大可用空間
      輸入在資料庫壓縮後,資料庫檔案中剩餘可用空間的最大百分比。 允許值介於 0 和 99 之間。

  4. 按一下 [確定]。

搭配回到頁首連結使用的箭頭圖示[回到頁首]

使用 Transact-SQL

若要壓縮資料庫

  1. 連接到 Database Engine。

  2. 在標準列中,按一下 [新增查詢]

  3. 將下列範例複製並貼到查詢視窗中,然後按一下 [執行]。 這個範例會使用 DBCC SHRINKDATABASE 縮小 UserDB 資料庫中的資料和記錄檔大小,使資料庫中能有 10% 的可用空間。

DBCC SHRINKDATABASE (UserDB, 10);
GO

搭配回到頁首連結使用的箭頭圖示[回到頁首]

待處理:壓縮資料庫之後

為壓縮檔案所移動的資料可散佈至檔案中的任何可用位置。 如此會造成索引片段,並可能導致大範圍之索引搜尋的查詢效能變慢。 若要消除資料片段,可考慮在壓縮之後重建該檔案的索引。

搭配回到頁首連結使用的箭頭圖示[回到頁首]

請參閱

參考

sys.databases (Transact-SQL)

sys.database_files (Transact-SQL)

DBCC (Transact-SQL)

DBCC SHRINKFILE (Transact-SQL)

概念

壓縮檔案

資料庫檔案與檔案群組