方法
有 2 種方法
TSQL
在資料庫按右鍵 > 屬性 > 復原模式
如果 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
- 資料庫按右鍵 > 工作(Tasks) > 壓縮(Shrink) > 檔案(Files)
- 檔案類型選擇紀錄檔 (log),並選擇要壓縮的 log 檔的位置,壓縮動作可以自行選擇。
- 按下確定即可壓縮 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三兩事