MS-SQL 트랜잭션 로그파일(LDF) 줄이기
MS-SQL 사용 시 트랜잭션 로그가 쌓이는 LDF 파일이 한없이 쌓여서 디스크를 가득 채우게 된다.
트랜잭션로그를 한없이 쌓을 수 없으므로 트랜잭션 로그 백업 후 트랜잭션을 정리하여야 하는데
트랜잭션 로그 정리작업은 아래의 쿼리로 진행 할 수 있다.
풀백업과 묶어서 트랜잭션 로그 정리를 함께 수행한다면 트랜잭션 로그로 인해 디스크용량이 꽉차는
불상사는 발생하지 않을 것이다.
USE DATABASE_NAME -- DB 이름을 넣어주세요
------------------------------------------------------------------------------
-- 아래쪽은 그대로 두시면 됩니다.
------------------------------------------------------------------------------
GO
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, 1)
-- 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 )