9002: The transaction log for database is full due to ...
SQL Server의미
데이터베이스의 트랜잭션 로그 파일이 가득 차 새 트랜잭션을 로깅할 수 없다. 데이터베이스는 쓰기를 거부하며 읽기 전용처럼 동작할 수 있다.
원인
FULL 복구 모델에서 로그 백업 없음, 오래 열린 트랜잭션, 복제/AlwaysOn 지연, 또는 로그가 증가할 수 없음(autogrow 비활성화 또는 디스크 가득 참). log_reuse_wait_desc가 원인을 보여 준다.
해결 방법
sys.databases의 log_reuse_wait_desc를 확인한다. FULL 모델에서 LOG_BACKUP이면 로그 백업(BACKUP LOG)을 수행한다. ACTIVE_TRANSACTION이면 열린 트랜잭션을 찾아 커밋/롤백한다(DBCC OPENTRAN). 디스크 공간을 확보하거나 로그 파일의 autogrow 설정을 수정한다. 로그가 실제로 커졌다면 백업 후 DBCC SHRINKFILE로 축소한다. 로그 체인이 필요 없다면 복구 모델을 검토한다.
같은 데이터베이스의 다른 항목
- 8152String or binary data would be truncated
- 2628String or binary data would be truncated in table, column ...; truncated value
- 1222Lock request time out period exceeded
- 1105Could not allocate space for object in database because the filegroup is full
- 208Invalid object name
- 229The SELECT/EXECUTE permission was denied on the object
- 4060Cannot open database requested by the login. The login failed