sql server 2012 如何收縮事務日志


sql2008不再支持 BACKUP LOG 數據庫名 WITH NO_LOG   語句 

BACKUP Log zxta with no_log

截斷事務日志 sql2008 提示錯誤如下 
 BACKUP LOG 數據庫名 WITH NO_LOG 
Msg 3032, Level 16, State 2, Line 1
此語句不支持一個或多個選項(no_log)。請查閱文檔以了解所支持的選項。

 

事務日志截斷

若要避免數據庫的事務日志被填滿,例行備份至關重要。在簡單恢復模式下,備份了數據庫后會自動截斷日志,而在完整恢復模式下,只有備份了事務日志后方才截斷日志。但是,截斷過程有時也可能發生延遲。有關識別和應對各種延遲因素的信息,請參閱可能延遲日志截斷的因素。

 注意  
BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 選項已廢止。使用完整恢復模式或大容量日志恢復模式時,如果必須刪除數據庫中的日志備份鏈,請切換至簡單恢復模式。有關詳細信息,請參閱有關從完整恢復模式或大容量日志恢復模式切換的注意事項。

SQL SERVER 2008 中 BACKUP LOG WITH TRUNCATE_ONLY 已不再被支持,要收縮數據庫日志,首先需要通過將數據庫恢復模式設置為 SIMPLE 來截斷該文件。

語句如下:

--BACKUP log testDB with no_log

USE testDB; 
GO

-- Truncate the log by changing the database recovery model to SIMPLE.

ALTER DATABASE testDB SET RECOVERY SIMPLE;

GO

-- Shrink the trun cated log file to 1 MB.

DBCC SHRINKFILE (testDB_Log, 1); 
GO

-- Reset the database recovery model.

ALTER DATABASE testDB SET RECOVERY FULL; 
GO

也可以通過圖形界面來完成。

通過先備份日志,然后再收縮日志文件,如下:

 --先執行完整備份
backup database mydb to disk='D:\db\mydb.bak' WITH init;
--再執行日志備份(默認追加)
backup log mydb to disk='D:\db\mydb.bak' 
--修改數據庫恢復模式
ALTER DATABASE mydb SET RECOVERY SIMPLE
--收縮日志至10MB 
DBCC SHRINKFILE (mydb_Log, 10); 
--修改數據庫恢復模式
ALTER DATABASE testDB SET RECOVERY FULL; 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM