SQL Server 釋放 Transaction Log 交易紀錄檔 空間

在 SQL Server 2016 中預設資料庫檔案路徑為:
    
C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA
    

假設有一個名稱為 mydb 的資料庫, 在裡面會發現有以下的檔案:
    
mydb.mdf
mydb_log.ldf
    

資料庫名稱_log.ldf 就是 Transaction Log (交易紀錄檔),下面的步驟就是來釋放 Transaction Log 檔案的儲存空間。

查看 Transaction Log 使用情況:
    
DBCC SQLPERF(LOGSPACE);
    

範例輸出:
    
DBCC SQLPERF(LOGSPACE);
+----------------------+-------------+------------------+------+
|Database Name         |Log Size (MB)|Log Space Used (%)|Status|
+----------------------+-------------+------------------+------+
|master                |2.2421875    |25.827526         |0     |
|tempdb                |7.9921875    |5.3457966         |0     |
|model                 |7.9921875    |41.642227         |0     |
|msdb                  |5.5546875    |19.277426         |0     |
|mydb                  |24918.242    |0.2591522         |0     |
|model_msdb            |5.5546875    |18.15225          |0     |
|model_replicatedmaster|1.4921875    |41.492146         |0     |
+----------------------+-------------+------------------+------+
    

可以發現 mydb 的 log 占了 24,918 MB

在刪除前要先備份檔案
備份 Log 檔案(記得替換路徑):
    
BACKUP LOG [mydb] TO DISK = 'C:\Backup\mydb_Log.trn';
    

再次檢查空間,就會發現 Log Space Used 變得很少:
    
DBCC SQLPERF(LOGSPACE);
    

只會減少 Log Space Used ,並不會真的釋放檔案空間,會發現 Log Size 還是很大,可以使用下面的指令限制 Log Size ,達成實際減少儲存空間:
    
USE mydb;
DBCC SHRINKFILE (mydb_log, 1000); -- 設定目標大小,範例為 1,000 MB

    

範例輸出:
    
DBCC SQLPERF(LOGSPACE);
+----------------------+-------------+------------------+------+
|Database Name         |Log Size (MB)|Log Space Used (%)|Status|
+----------------------+-------------+------------------+------+
|master                |2.2421875    |26.437283         |0     |
|tempdb                |7.9921875    |5.443548          |0     |
|model                 |7.9921875    |41.660557         |0     |
|msdb                  |5.5546875    |20.815752         |0     |
|tertec                |999.992      |0.071103625       |0     |
|model_msdb            |5.5546875    |18.15225          |0     |
|model_replicatedmaster|1.4921875    |41.492146         |0     |
+----------------------+-------------+------------------+------+
    



文章撰寫中...請稍後...

留言

張貼留言

如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com