天天看點

收縮資料庫日志

原文: 收縮資料庫日志

USE DATABASENAME;
GO
--不得已時再用這個
DUMP TRANSACTION DATABASENAME WITH NO_LOG


--先截斷事務日志
BACKUP LOG DATABASENAME TRUNCATE_ONLY|WITH NO_LOG|TO DISK='檔案路徑'


--再收縮日志
DBCC SHRINKFILE (2, 7)|SHRINKFILE (DATABASENAME);
--要收縮的檔案的fileid,對應sysfiles中的fileid。 
--收縮檔案到7 MB大小,如果沒有指定,DBCC SHRINKFILE 将檔案大小減少到初始預設檔案大小
GO      

注意:收縮完日志後建議。立即進行完整備份。因為日志被截斷,很難恢複之前的資料。

  在指令參考手冊中的dump transaction with no_log條目下,有一條警告資訊告訴你,你應該把這條指令作為沒有其它辦法時的最後一招才使用它。

若你在對資料庫的修改發生時使用dump transaction with no_log,你就會冒整個資料庫崩潰的風險。在多數情況下,它們被反映成813或605錯誤。為了在資料庫被修改時,删除transaction log中的不活躍部分可使用dump transaction with trancate_only。這條指令寫進transaction log時,并且它還做不要的并發性檢查。這兩條指令都有與其相關的警告,在指令參考手冊中會看到這些警告。請確定在使用其中任一條指令以前,你已了解這些警告和訓示。 Syase提供dump transaction with no_log來處理某些非常緊迫的情況。為了盡量確定你的資料庫的一緻性,你應将其作為“最後一招”。