본문 바로가기

개발

[DB] MSSQL 트랜잭션 로그파일 크기 줄이기

MSSQL 트랜잭션 로그파일 크기 줄이기


* MSSQL 2008 의 경우
 

USE [DataBase]; GO -- Truncate the log by changing the database recovery model to SIMPLE. ALTER DATABASE [DataBase] SET RECOVERY SIMPLE; GO
-- Shrink the truncated log file to 1 MB. DBCC SHRINKFILE ([DataBase_Log], 1); GO
-- Reset the database recovery model. ALTER DATABASE [DataBase] SET RECOVERY FULL; GO


* MSSQL 2005 의 경우


use [DB명];
sp_helpfile;                                       <- 로그파일 정보 확인

backup log [DB명] with no_log;
dbcc shrinkfile ([로그파일명], 10);          <- [로그파일명]을 10MB로 축소


* MSSQL 2000 의 경우


use [DB명];
sp_helpfile;                                       <- 로그파일 정보 확인

backup log [DB명] with truncate_only;
dbcc shrinkfile ([로그파일명], 10);          <- [로그파일명]을 10MB로 축소

===================================================================

### 로그파일의 정보를 확인합니다.

dbcc loginfo
 

### 현재 지정된 디비가 사용하는 mdf 및 ldf파일의 경로, 이름 및 크기를 확인합니다.

exec sp_helpfile


### 위에서 정해준 디비의 로그를 백업해 줍니다.

backup Log testdb to disk=’d:\dbbackup\temp\testdb.bak’

go


### 트랜잭션 로그파일을 최소의 단위로 축소합니다.

backup log testdb with truncate_only


### 트랜잭션 로그파일을 삭제합니다.

backup log testdb with no_log


### 트랜잭션 로그파일을 10메가로 생성합니다.

dbcc shrinkfile (testdb_log, 10)


### mdf와 ldf파일이 제대로 잘 리사이징 되었는지 확인합니다.

exec sp_helpfile


모든 작업이 잘 마무리 되었다면, 이제는 갑작스런 트랜잭션로그의 증가로 문제가 되는 것을 방지하기 위해 트랜잭션로그파일의 최대크기를 지정해놓는 방법도 좋습니다.

alter database testdb

modify file ( name = testdb_log, maxsize = 200 mb )

go

위 의 과정을 진행하시면 트랜잭션로그는 위에서 지정한데로 200메가를 한계치로 생성 삭제 됩니다. 트랜잭션로그의 용량은 데이터의 중요도 및 규모에 따라 정책적으로 유지하셔야 하는 부분입니다. 200메가는 예제로 적어놓은 사이즈입니다.

또한 위의 과정 중 축소와 삭제는 둘 중 원하시는 방법을 선택적으로 사용하시면 됩니다.