본문 바로가기

Tech/MSSQL

LDF 파일 용량 줄이기

네이버 공유하기
728x90

버전별로 이것저것 신경쓸 필요 없이 아래 스크립트 하나면 거의 다 됨.


USE [YOUR_DB_NAME] -- 적용할 디비명, 여기하고 아래 LDF 파일 사이즈 부분만 수정하면 됨.
------------------------------------------------------------------------------
-- Do Not change anything below this line.
------------------------------------------------------------------------------
GO
-- Declare variables
DECLARE @SqlStatement as nvarchar(max)
DECLARE @LogFileLogicalName as sysname
 
-- Alter the database to simple recovery
SET @SqlStatement = 'ALTER DATABASE ' + DB_NAME() + ' SET RECOVERY SIMPLE' 
EXEC ( @SqlStatement )
 
-- Make sure it has been altered
SELECT [name], [recovery_model_desc] FROM sys.databases WHERE [name] = DB_NAME()
 
-- Set the log file name variable
SELECT @LogFileLogicalName = [Name] FROM sys.database_files WHERE type = 1
 
-- Shrink the logfile
DBCC Shrinkfile(@LogFileLogicalName, 100) -- 여기 적절하게 수정. 100 = 100MB 로 만들기.
 
-- Alter the database back to FULL
SET @SqlStatement = 'ALTER DATABASE ' + DB_NAME() + ' SET RECOVERY FULL' 
EXEC ( @SqlStatement )
 
-- Make sure it has been changed back to full
SET @SqlStatement = 'SELECT [name], [recovery_model_desc] FROM ' + DB_NAME() + '.sys.databases WHERE [name] = ''' + DB_NAME() + '''' 
EXEC ( @SqlStatement )



 여기까지. 아래는 참고용.


* 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메가는 예제로 적어놓은 사이즈입니다.
또한 위의 과정 중 축소와 삭제는 둘 중 원하시는 방법을 선택적으로 사용하시면 됩니다.


출처 : http://blog.naver.com/PostView.nhn?blogId=superxt&logNo=120211878027

반응형

'Tech > MSSQL' 카테고리의 다른 글

컬럼 수정시 Saving changes is not permitted 에러  (0) 2017.02.08
테이블별 용량 및 로우수 확인  (0) 2014.10.30
MDF 파일 용량 줄이기  (0) 2014.10.21
MSSQL - Convert, Substring  (0) 2014.07.22
MSSQL - csv 파일 넣기  (0) 2014.07.22
네이버 공유하기


* 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.