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
-- 備份資料庫,並壓縮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
留言
張貼留言