Sky Archive

DBMS/MsSQL

[SQL] MSSQL 트랜잭션 로그파일 비우는 방법

KingPork 2022. 3. 30. 16:17

 * 운영 및 유지보수 하다 보면 트랜잭션 로그파일이 꽉 차서 오류가 발생하게 된다. (MSSQL)

   오류가 발생하면 사용량을 확인해서 로그를 축소해주는 작업이 필요하다.

  

org.springframework.jdbc.UncategorizedSQLException: 
### Error updating database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 데이터베이스 'KINGPORK'의 트랜잭션 로그가 'LOG_BACKUP'(으)로 인해 꽉 찼습니다.
### The error occurred while setting parameters
### SQL: INSERT INTO KINGPORK  (KING, PORK, DATE)  VALUES(?,?,GETDATE())
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 데이터베이스 'KINGPORK'의 트랜잭션 로그가 'LOG_BACKUP'(으)로 인해 꽉 찼습니다.
; uncategorized SQLException for SQL []; SQL state [S0002]; error code [9002]; 데이터베이스 'KINGPORK'의 트랜잭션 로그가 'LOG_BACKUP'(으)로 인해 꽉 찼습니다.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 데이터베이스 'KINGPORK'의 트랜잭션 로그가 'LOG_BACKUP'(으)로 인해 꽉 찼습니다.

	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:90) ~[spring-jdbc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82) ~[spring-jdbc-4.3.12.RELEASE.jar:4.3.12.RELEASE]

 

1 ) 트랜잭션 로그파일을 비우는 방법

    - SQL로 처리하는 방법과 SSMS( SQL server Management Studio)의 메뉴로 처리하는 방법이 있는데,

      SQL로 처리하는 방법이 더 간단하여 해당 방법만 설명해 드리도록 하겠습니다.

1-1 ) SQL로 처리하는 방법

USE KINGPORK; 
-- 사용할 DB 선택

ALTER DATABASE KINGPORK SET RECOVERY SIMPLE; 
-- DB 복구 모델을 SIMPLE로 설정하여 파일을 비운다.

DBCC SHRINKDATABASE(KINGPORK);
-- DB의 필요 없는 공간을 축소

ALTER DATABASE KINGPORK SET RECOVERY FULL;
-- DB 복구 모델을 FULL 로 설정

  => SQL 실행하게 되면 " 트랜잭션 로그가 꽉 찼습니다 "라는 오류가 해결된다.

 

 

ref. https://trustit.tistory.com/23