資料庫使用久了,Log檔(交易紀錄)也會持續增加,如果沒有限制Log的成長,某天可能會發現硬碟滿了,資料庫會出現這樣的錯誤訊息
訊息 9002 …
資料庫 ‘northwind’ 的交易記錄已滿。如果要了解為何無法重複使用記錄中的空間,請參閱 sys.databases 中的 log_reuse_wait_desc 資料行。
查詢資料庫容量
如果想知道資料庫用掉多少容量,可以透過 報表 檢查磁碟使用量,在[資料庫]上按右鍵 > 報表 > 標準報表 > 磁碟使用量

清除當前資料庫的紀錄
目前實測 Server 2008~2019 都可以使用
如果已經是在指定的資料庫,可以直接執行這一段語法,就會清除該資料庫的紀錄
DECLARE @LogicalName nvarchar(128)
DECLARE @DataBaseName nvarchar(128)
SELECT @LogicalName = f.name, @DataBaseName = d.name
FROM sys.master_files f
INNER JOIN sys.databases d ON d.database_id = f.database_id
where d.name = DB_NAME()
ALTER DATABASE CURRENT SET RECOVERY SIMPLE WITH NO_WAIT
DBCC SHRINKFILE(@LogicalName, 1)
ALTER DATABASE CURRENT SET RECOVERY FULL WITH NO_WAIT

再查一次報表, 交易檔變小了.

查看實體檔, 也與報表一致.

清除指定資料庫的紀錄
上述的作法會取得目前的資料庫與邏輯紀錄檔名稱,假設要手動指定資料庫也可以,將下列的資料庫名稱與記錄檔邏輯名稱換掉即可
USE [資料庫名稱]
GO
ALTERDATABASE [資料庫名稱] SETRECOVERY SIMPLE WITHNO_WAIT
DBCC SHRINKFILE(記錄檔邏輯名稱, 1)
ALTERDATABASE [資料庫名稱] SETRECOVERY FULLWITHNO_WAIT
GO換完之後大概長這樣
USE [northwind]
GO
ALTER DATABASE [northwind] SET RECOVERY SIMPLE WITH NO_WAIT
DBCC SHRINKFILE(northwind_log, 1)
ALTER DATABASE [northwind] SET RECOVERY FULL WITH NO_WAIT
GO



