2007年11月13日 星期二

清除交易紀錄檔

一、
backup log 資料庫名 with TRUNCATE_ONLY // NO_LOG
此指令之用意為備份資料庫的Log檔,由於我們在上述語法中沒有指定備份的裝置為何,
Sql Server即會認為此動作為單純要把已交易完成的Log資料清空
(已交易完成的資料所指即為已commit的資料),
而Truncate_Only的選項則是告訴Sql Server目的在清空Log之空間,
至於清出的空間則由Sql Server管理,不還給OS。 NO_LOG 與 TRUNCATE_ONLY 是同義字。

二、壓縮指定資料庫中資料檔的大小
dbcc shrinkdatabase (資料庫名 , { NOTRUNCATE TRUNCATEONLY } )
NOTRUNCATE :讓已釋放的檔案空間保留在資料庫檔案內。若未指定,會釋放檔案空間給作業系統。
TRUNCATEONLY:讓資料檔中任何未使用的空間釋放給作業系統,並將檔案縮到上一次配置的範圍。
三、壓縮目前資料庫指定的資料檔或記錄檔的大小
dbcc shrinkfile ( 指定檔名 [ , { EMPTYFILE NOTRUNCATE TRUNCATEONLY } ] )
NOTRUNCATE :讓已釋放的檔案空間保留在檔案中。
TRUNCATEONLY :讓檔案中任何未使用的空間釋放到作業系統,在不移動任何資料的情形下縮減檔案大小。


BACKUP LOG [database_name] WITH TRUNCATE_ONLY
DBCC SHRINKFILE ([database_log_file_name], [target_size])

五、範例
(1)
backup log education with NO_LOG
use education
dbcc shrinkdatabase (education)
'----------------------------------------------------
(2)
backup log education with NO_LOG
use education
dbcc shrinkfile (education_log , truncateonly)
'----------------------------------------------------
(3)
BACKUP LOG TestDB WITH TRUNCATE_ONLY
DBCC SHRINKFILE ('TestDB_Log', 2)

沒有留言: