SQL 2008不支援Backup的Truncat_Only選項

以前要將資料庫的交易記錄檔截斷並縮小的話,都是使用以下的指令:


-- 備份資料庫,並壓縮log檔
use TestDB
BACKUP LOG TestDB WITH TRUNCATE_ONLY
DBCC SHRINKFILE ('TestDB_Log', 2)
GO


可是在換到SQL 2008之後,執行上面的指令會出現以下的錯誤訊息:

'TRUNCATE_ONLY' 不是可辨識的 BACKUP 選項

看來是SQL 2008不再支援TRUNCATE_ONLY的選項了。

那要截斷交易記錄檔的話,要如何進行呢?可以參考這篇文章

主要的原理是在將資料庫的備份模式切換到簡易模式(SIMPLE)時,它就會自動地截斷交易記錄檔。但就算是載斷了交易記錄檔,原本log檔的大小還是不會改變,所以要再加上使用DBCC SHRINKFILE()來縮小log檔。

完整的指令如下:


use TestDB
-- 備份資料庫,並壓縮log檔
/*
當資料庫使用簡單復原模式時,便會自動截斷交易記錄。
如果您必須從資料庫中移除記錄備份鏈結,請切換到簡單復原模式。
*/
--01 將資料庫 Northwind 切換為「簡單復原模式」,便會自動截斷交易記錄。
ALTER DATABASE TestDB
SET RECOVERY SIMPLE WITH NO_WAIT
GO

DBCC SHRINKFILE ('TestDB_Log', 2)
GO

--02 若決定要備份交易記錄檔(*.ldf),再將資料庫 Northwind 切換回「完整復原模式」
ALTER DATABASE TestDB
SET RECOVERY FULL WITH NO_WAIT
GO

留言

這個網誌中的熱門文章

DOS Batch指令檔中如何記錄log資訊

用捷徑方式執行需帶入命令列參數的Windows Form程式

使用regular expression來match中括號(square bracket)