* 운영 및 유지보수 하다 보면 트랜잭션 로그파일이 꽉 차서 오류가 발생하게 된다. (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 실행하게 되면 " 트랜잭션 로그가 꽉 찼습니다 "라는 오류가 해결된다.
