如何壓縮 Transaction Log 檔案 | SQL

方法

有 2 種方法

  • 使用 SSMS
  • 使用 TSQL

TSQL

在資料庫按右鍵 > 屬性 > 復原模式

Imgur

如果 DB 的復原模式使用「簡單」,直接使用 DBCC SHRINK 指令即可。

1
2
3
4
5
-- 找出 log 檔案名稱
SELECT name FROM sys.master_files WHERE type_desc = 'LOG'
-- AdventureWorks2012_log為壓縮的檔名
-- 1 為 AdventureWorks2012_log 壓縮到剩 1 MB
DBCC SHRINKFILE (AdventureWorks2012_log, 1)

如果 DB 的復原模式使用「完整」,可以將復原模式從完整變成「簡單」後再壓縮檔案,壓縮檔案結束後再將復原模式調回完整。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
-- 將復原模式變成「簡單」
ALTER DATABASE AdventureWorks2012
SET RECOVERY SIMPLE
GO
-- 壓縮檔案
DBCC SHRINKFILE (AdventureWorks2012_log, 1)
GO
-- 將復原模式變成「完整」
ALTER DATABASE AdventureWorks2012
SET RECOVERY FULL

SSMS

  1. 資料庫按右鍵 > 工作(Tasks) > 壓縮(Shrink) > 檔案(Files)

Imgur

  1. 檔案類型選擇紀錄檔 (log),並選擇要壓縮的 log 檔的位置,壓縮動作可以自行選擇。

Imgur

  1. 按下確定即可壓縮 log 檔

TSQL

1
2
3
4
5
6
7
8
USE [master];
GO
-- 要備份的資料庫名稱
BACKUP DATABASE [SQLTestDB]
TO DISK = N'Z:\SQLServerBackups\AdvWorksData.bak' 
WITH NOFORMAT, NOINIT,
NAME = N'SQLTestDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
GO

參考資料

How to shrink the transaction log

阿湯哥@IT三兩事

comments powered by Disqus