[MS SQL] 資料庫的壓縮 和 清除LDF交易記錄檔

資料庫用久了,記錄檔一定都會長的很大,
如果都有固定時做備份,其實就可把資料庫和記錄檔做一次清理和壓縮的動作。

DECLARE @Error INT
SET @Error=(SELECT TOP 1 size/128.0 - CAST(FILEPROPERTY([NAME], 'SpaceUsed') AS int)/128.0
AS AvailableSpaceInMB FROM sys.database_files ORDER BY [NAME] DESC)
--PRINT @Error

IF(@Error>1)
    BEGIN
        ALTER DATABASE WKProject_WKForVoucNo --資料庫名稱
        SET RECOVERY SIMPLE;                 --設置為簡單模式
        DBCC SHRINKFILE (LWProject_WK, 1); --資料庫邏輯名稱,初始大小(MB)
        DBCC SHRINKFILE (LWProject_WK_log, 1); --記錄檔邏輯名稱,初始大小(MB)
        ALTER DATABASE WKProject_WKForVoucNo
        SET RECOVERY FULL;                                  --回復為完整模式
    END
--ELSE
--BEGIN
--    PRINT  @Error
--END

--SELECT [name] FROM sys.database_files                     -- 可以取得資料庫和記錄檔邏輯名稱


留言