본문 바로가기
DataBase/MS-SQL

[MS-SQL] DB 로그삭제(파일축소) - Version 3 단일적용(간단2)

by 너울림 2022. 12. 22.

DB 로그삭제(파일축소) - Version 3

 

DB 로그삭제(파일축소) - Version 3 단일적용(간단2)

 


포스팅 개요


이전 Version과 큰 차이점은 데이터베이스 이름을 변수로 받아 사용하기 위한 전체적인 구문 변환입니다. 자세한 내용은 마지막 참고 링크를 통해 이전 Version의 내용을 확인하시면 됩니다. 그럼 예제 쿼리의 목적과 장점에 대해 먼저 알아보겠습니다.

  • 트랜잭션 로그(transaction log)의 한계까지 가득 차 에러가 생길 때 사용합니다.
  • 하드디스크 용량이 부족할 정도로 로그 크기가 커졌을 때 사용합니다.
  • Sql Server 2005 이상을 기준으로 작성되었습니다.
  • 이전 Version들과의 실행 결과 부분에서는 큰 차이가 없습니다만 사용자 프로시저로 생성하기 더 쉬워졌으며 다른 방향으로의 활용도 가능해졌습니다.


예제 쿼리


이전 버전과는 다른 점은 DB_NAME을 변수 Varchar로 받아서 사용가능합니다.

DECLARE @SqlStatement as nvarchar(max)
DECLARE @DBName VARCHAR(20)

--데이터베이스 이름을 변수로 지정
SET @DBName = 'master'

EXEC ('ALTER DATABASE ' + @DBName + ' SET RECOVERY SIMPLE')
EXEC ('SELECT [name], [recovery_model_desc] FROM ' + @DBName + '.sys.databases WHERE [name] = ''' + @DBName + '''')
SET @SqlStatement = 'DECLARE @LogFileLogicalName as SYSNAME;'
SET @SqlStatement = @SqlStatement + 'SELECT @LogFileLogicalName = [Name] FROM ' + @DBName + '.sys.database_files WHERE type = 1;'
SET @SqlStatement = @SqlStatement + 'DBCC Shrinkfile(@LogFileLogicalName, 1)'
EXEC ('USE '+ @DBName + ';' + @SqlStatement )
EXEC ('ALTER DATABASE ' + @DBName + ' SET RECOVERY FULL')
EXEC ('SELECT [name], [recovery_model_desc] FROM ' + @DBName + '.sys.databases WHERE [name] = ''' + @DBName + '''')
EXEC ('SELECT * FROM ' + @DBName + '.sys.database_files')

실행 결과


master 데이터베이스로 테스트하였습니다. 이제 필요에 따라 사용자 프로시저로 생성하여 유동적인 접근이 가능해졌습니다.


참고 링크

 

2017.12.15 - [DataBase/MS-SQL] - [MS-SQL] DB 로그삭제(파일축소) - Version 1 단일적용(일반)

 

[MS-SQL] DB 로그삭제(파일축소) - Version 1 단일적용(일반)

DB 로그삭제(파일축소) - Version 1 단일적용(일반) 포스팅 개요 SQL Server의 트랜잭션 로그(transaction log)가 가득 차거나 Database 파일 중. ldf 파일 크기가. mdf 파일에 비해 지나치게 커졌다면 오늘 포스

ullim.net

2022.12.10 - [DataBase/MS-SQL] - [MS-SQL] DB 로그삭제(파일축소) - Version 2 단일적용(간단1)

 

[MS-SQL] DB 로그삭제(파일축소) - Version 2 단일적용(간단1)

DB 로그삭제(파일축소) - Version 2 단일적용(간단1) 포스팅 개요 Version 1에서 동적 쿼리 방식을 이용한 Version 2 방식입니다. 자세한 내용은 마지막 참고 링크를 통해 확인하시고 오늘 포스팅한 예제

ullim.net

2022.12.23 - [DataBase/MS-SQL] - [MS-SQL] DB 로그삭제(파일축소) - Version 4 일괄적용

 

[MS-SQL] DB 로그삭제(파일축소) - Version 4 일괄적용

DB 로그삭제(파일축소) - Version 4 일괄적용 포스팅 개요 서버의 모든 DB 정보를 불러오는 'sys.databases' 테이블을 참고하여 모든 사용자 DB의 로그 삭제(축소) 작업을 일괄로 진행하는 쿼리입니다. 그

ullim.net

 

댓글