首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000/2005/2008 清空交易記錄檔差異比較與操作指南

     編輯:關於SqlServer

    版本差異總覽

    版本關鍵指令備註
    SQL 2000DUMP TRANSACTION ... WITH NO_LOG / BACKUP LOG ... WITH NO_LOG已移除於 2008
    SQL 2005支援上述指令,亦可用 DBCC SHRINKFILE建議改用 SIMPLE 模式切換
    SQL 2008+不支援 NO_LOG/TRUNCATE_ONLY必須切換復原模式配合 SHRINKFILE

    SQL Server 2000 / 2005 傳統寫法 (已淘汰)

    -- 2000/2005 通用
    BACKUP LOG [YourDB] WITH NO_LOG;
    DBCC SHRINKDATABASE([YourDB]);
    警告:NO_LOG 會中斷記錄鏈,後續無法進行記錄備份,僅適用於緊急釋放空間且可接受重新完整備份的情境。

    SQL Server 2008 / 2008 R2 / 2012+ 標準流程

    USE [master];
    GO
    ALTER DATABASE [YourDB] SET RECOVERY SIMPLE WITH NO_WAIT;
    GO
    ALTER DATABASE [YourDB] SET RECOVERY SIMPLE;
    GO
    
    USE [YourDB];
    GO
    -- 邏輯記錄檔名稱請先查詢
    DBCC SHRINKFILE (N'YourDB_Log', 11, TRUNCATEONLY); -- 目標 11 MB 視需求調整
    GO
    
    USE [master];
    GO
    ALTER DATABASE [YourDB] SET RECOVERY FULL WITH NO_WAIT;
    GO
    ALTER DATABASE [YourDB] SET RECOVERY FULL;
    GO

    查詢邏輯記錄檔名稱

    USE [YourDB];
    GO
    SELECT file_id, name FROM sys.database_files WHERE type_desc = 'LOG';

    關鍵差異解析

    • NO_LOG / TRUNCATE_ONLY:2008 起移除,因會破壞復原能力。
    • SIMPLE 模式切換:內部執行 CHECKPOINT 截斷非作用中 VLF,再配合 SHRINKFILE(..., TRUNCATEONLY) 釋放空間,不移動資料頁,效能影響最小。
    • 目標大小:SHRINKFILE 第二參數為 MB;0 表預設最小值,指定數值可保留緩衝空間避免頻繁自動成長。

    最佳實務建議

    1. 生產環境嚴禁常態使用此腳本,應建立定期 BACKUP LOG 排程。
    2. 若必須執行,請在維護窗口、完整備份後進行,並立即切回 FULL 模式且再做一次完整備份。
    3. 監控 DBCC SQLPERF(LOGSPACE) 與 VLF 數量 (DBCC LOGINFO),預先規劃初始大小/成長增量。
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved