[轉貼] SQL Server Log 檔案過大 處理方式

 

SQL Server Log 檔案過大,處理方式

最近公司發現許多同事抱怨資料庫速度變得很慢,

一檢查,SQL Server 磁碟沒空間了。當下就知道為什麼慢了。

當務之急,就是將超大的資料庫  log 檔備份並 shink。

SQL Server 2005

以前在 SQL Server 2005 指令會這樣下
use master
go

--備份目前的 log 
backup log DatabaseName to disk='c:\db.log' WITH NOFORMAT
--將 log 清除
BACKUP LOG DatabaseName WITH TRUNCATE_ONLY


--找到 DatabaseNameLog 的值
use DatabaseName
go
select name from sys.database_files
where type_desc = 'log'

--縮減 log file 到 1MB
DBCC SHRINKFILE(DatabaseNameLog, 1)

SQL Server 2008

到了 SQL Server 2008,Trancate_only 的指令正式被取消了。由於資料庫的復原模式為簡單的情形下是不記錄所有的 log資料的。我們可以利用這一點清除 log 資料。因此,替代的方法,是將資料庫的復原模式先換成簡單模式,再調整為完整。指令如下

use master
go

--備份目前的 log 
backup log DatabaseName to disk='c:\db.log' WITH NOFORMAT
--將資料庫復原模式切換到簡單模式
ALTER DATABASE DatabaseName SET RECOVERY SIMPLE WITH NO_WAIT
 

--找到 DatabaseNameLog 的值
use DatabaseName
go
select name from sys.database_files
where type_desc = 'log'

--縮減 log file 到 1MB
DBCC SHRINKFILE(DatabaseNameLog, 1)


--將資料庫復原模式切換到完整模式
USE [master]
GO
ALTER DATABASE [DatabaseName] SET RECOVERY FULL WITH NO_WAIT

留言

這個網誌中的熱門文章

TeknoParrot 模擬器介紹,俗稱《鸚鵡模擬器》

[轉貼] ASP.NET傳遞參數給Crystal Report做Export或Print的動作

[轉貼] Server 端Post資料到 .ashx