sql數據庫壓縮步驟一:清空日誌
DUMP TRANSACTION 庫名 WITH NO_LOG
sql數據庫壓縮步驟二:截斷事務日誌
BACKUP LOG 數據庫名 WITH NO_LOG
sql數據庫壓縮步驟三:收縮數據庫檔案
如果不壓縮,數據庫的檔案不會減小
企業管理器--右鍵你要壓縮的數據庫--所有任務--收縮數據庫--收縮檔案
--選擇日誌檔案--在收縮方式裏選擇收縮至XXM,這裏會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
--選擇數據檔案--在收縮方式裏選擇收縮至XXM,這裏會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
也可以用SQL語句來完成
--收縮數據庫
DBCC SHRINKDATABASE(客戶資料)
--收縮指定數據檔案,1是檔案號,可以透過這個語句查詢到:
select * from sysfiles DBCC SHRINKFILE(1)
sql數據庫壓縮步驟四:最大化的縮小日誌檔案
(如果是sql 7.0,這步只能在查詢分析器中進行)
a.分離數據庫:
企業管理器--服務器--數據庫--右鍵--分離數據庫
b.在我的電腦中刪除LOG檔案
c.附加數據庫:
企業管理器--服務器--數據庫--右鍵--附加數據庫
此法將生成新的LOG,大小隻有500多K
或用代碼:
下面的示例分離 pubs,然後將 pubs 中的一個檔案附加到當前服務器。
a.分離
EXEC sp_detach_db @dbname = ’pubs’
b.刪除日誌檔案
c.再附加
EXEC sp_attach_single_file_db @dbname = ’pubs’, @physname = ’c:Program FilesMicrosoft SQL ’
sql數據庫壓縮步驟五:爲了以後能自動收縮,做如下設定
企業管理器--服務器--右鍵數據庫--屬性--選項--選擇"自動收縮"
--SQL語句設定方式:
EXEC sp_dboption ’數據庫名’, ’autoshrink’, ’TRUE’
sql數據庫壓縮步驟六:避免日誌增長得太大
企業管理器--服務器--右鍵數據庫--屬性--事務日誌
--將檔案增長限制爲xM(x是你允許的最大數據檔案大小)
--SQL語句的設定方式:
alter database 數據庫名 modify file(name=邏輯檔案名,maxsize=20)
可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令來壓縮數據庫。其中DBCC SHRINKDATABASE 命令對數據庫進行壓縮,DBCC SHRINKFILE 命令對數據庫中指定的檔案進行壓縮。DBCC SHRINKDATABASE 命令語法如下:DBCC SHRINKDATABASE (database_name [, target_percent][, {NOTRUNCATE | TRUNCATEONLY}] )各參數說明如下:target_percent: 指定將數據庫壓縮後,未使用的空間佔數據庫大小的百分之幾。如果指定的百分比過大,超過了壓縮前未使用空間所佔的比例,則數據庫不會被壓縮。並且壓縮後的數據庫不能比數據庫初始設定的容量小。NOTRUECATE:將數據庫縮減後剩餘的空間保留在數據庫,中不返還給操作系統 ,如果不選擇此選項,則剩餘的空間返還給操作系統。TRUNCATEONLY :