Thursday, January 29, 2009

如何清除 Microsoft SQL2000, SQL2005 的 log 檔

使用 MSSQL Server 的人一定會發現,雖然資料很少,但由於 MSSQL 機制的關係,會將 transaction log 保留作為後面 recovery 用,導致 transaction 的 log file 變成非常的大,尤其是很多人用的時候,transaction log 更是大的誇張

若平常有做備份,其實這些 transaction log 是可以不要的。要去除這些 log ,可以利用 MSSQL 內建的指令去除,可以參考以下步驟

1. 找出 log file 目錄
要縮小這些 log ,必須先找出 log 到底有多大。這個 log file 普通都會跟資料檔放在同一個目錄,在 MSSQL 2005 的系統裡面,預設放資料檔的目錄為
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\










副檔名為 mdf 的為資料檔, 副檔名為 ldf 的為 transaction log 檔

2. 縮小 log file
打開 SQL2005 的 Server Management Studio 或 SQL2000 的 Analyzer,然後執行以下指令

=======================================
USE [master]
ALTER DATABASE [master]
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (mastlog, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE [master]
SET RECOVERY FULL;
GO
=========================================

這邊需注意的是,[master] 與 [mastlog] 是邏輯名稱 (logical name),不是資料檔名稱







注意事項
1. 一但將這些 log file 清除,就無法做 transaction 的 recovery。
何謂 transaction 的 recovery ,就是可以利用之前的備份,將資料 recover 到特定日期。如今天是 2009/1/30,若要將資料庫還原到 1/27 的狀態,則需有 2009/1/25 的 full backup,便可以配合 1/26, 1/27 的 transaction backup ,將資料庫 recover 到 1/27 的狀態。

2. 做清除 transaction log 前最好先做 full backup ,以防萬一。

No comments: