天天看點

DBCC收縮資料庫

  DBCC是SQL Server的資料庫控制台指令。它可以提供多種指令,用于實作資料庫維護、驗證、擷取資訊等功能。

用法一:使用DBCC SHRINKDATABASE語句收縮資料庫

     使用DBCC SHRINKDATABASE語句可以收縮指定資料庫中的資料檔案和日志檔案的大小,其基本文法結構如下:

  基本文法:

  DBCC SHRINKDATABASE(資料庫名|資料庫ID|0,目标百分比,NOTRUNCATE|TRUNCATEONLY)

  在DBCC SHRINKDATABASE後面需要指定要收縮的資料庫名稱或資料庫ID。如果使用0,則收縮目前資料庫。

  參數“目标百分比”,可選,隻對收縮資料檔案有效。使用此參數後,檔案末尾已配置設定的頁移動到檔案前面未分

配的頁。檔案末尾的可用空間不會傳回給作業系統,檔案的實體大小也不會改變。

參數“TRUNCATEONLY”,可選,也隻對收縮資料檔案有效。使用此參數後,檔案末尾的所有可用空間都會釋放給

作業系統,但不在檔案内部執行頁移動操作。是以,使用此參數資料檔案隻能收縮最近配置設定的區。

例如,收縮資料庫db_test,剩餘可用空間為10%,代碼如下:

  需要注意的是,資料庫空間并不是越小越好。因為大多數資料庫都需要預留一部分空間,以供日常操作使用。因

此,在收縮資料庫時,如果資料庫檔案的大小不變或者反而變大了,則說明收縮空間是正常操作所需要的,這是

,就不需要收縮資料庫了。

用法二:使用DBCC SHRINKDATABASE語句收縮指定的資料庫檔案

  DBCC SHRINKFILE(檔案名|檔案ID|0,EMPTYFILE,收縮後檔案的大小,NOTRUNCATE|TRUNCATEONLY)

  參數檔案名,必填,指要收縮的資料庫檔案的邏輯名稱。

  參數EMPTYFILE,可選,資料庫引擎将目前檔案的所有資料都遷移到同一檔案組中的其他檔案,然後可以使用

ALTER DATABASE語句來删除該檔案。

  參數"收縮後檔案的大小"用整數表示,機關為MB。如果未指定此參數,則檔案減少到預設的檔案大小。

  參數“TRUNCATEONLY”,可選,也隻對收縮資料檔案有效。使用此參數後,檔案末尾的所有可用空間都會釋放給

例如:将資料庫db_test中的db_test1檔案收縮的20MB,代碼如下:

例如:使用EMPTYFILE關鍵字清空資料庫檔案。

将資料庫db_test中的db_test1檔案清空,然後使用ALTER DATABASE語句來删除該檔案,代碼如下:

例如:有時候日志檔案會變得很大,可以使用DBCC SHRINKFILE來收縮日志檔案,代碼如下: