꽉 찬 트랜잭션 로그 문제 해결(SQL Server 오류 9002)Troubleshoot a Full Transaction Log (SQL Server Error 9002)

이 항목에서는 트랜잭션 로그가 꽉 찼을 때 알맞은 대처 방법에 대해 설명하고 앞으로 이런 상황을 방지하기 위한 방법을 제시합니다.This topic discusses possible responses to a full transaction log and suggests how to avoid it in the future.

트랜잭션 로그가 꽉 차면 SQL Server 데이터베이스 엔진SQL Server Database Engine 에서 9002 오류가 발생합니다.When the transaction log becomes full, SQL Server 데이터베이스 엔진SQL Server Database Engine issues a 9002 error. 로그는 데이터베이스가 온라인 상태이거나 복구 중일 때 꽉 찰 수 있습니다.The log can fill when the database is online, or in recovery. 데이터베이스가 온라인 상태일 때 로그가 꽉 차면 계속 온라인 상태로 유지되지만 데이터베이스를 읽을 수만 있고 업데이트할 수 없습니다.If the log fills while the database is online, the database remains online but can only be read, not updated. 복구 중에 로그가 꽉 차면 데이터베이스 엔진Database Engine 에서 데이터베이스를 RESOURCE PENDING으로 표시합니다.If the log fills during recovery, the 데이터베이스 엔진Database Engine marks the database as RESOURCE PENDING. 두 경우 모두 사용자 동작을 통해 사용 가능한 로그 공간을 만들어야 합니다.In either case, user action is required to make log space available.

트랜잭션 로그가 꽉 찼을 경우 대처 방법Responding to a full transaction log

트랜잭션 로그가 꽉 찬 경우의 적절한 대처 방법은 로그가 꽉 차게 된 조건에 의해서도 영향을 받습니다.The appropriate response to a full transaction log depends partly on what condition or conditions caused the log to fill.

지정된 경우에서 로그 잘림이 발생하지 않는 이유를 확인하려면 sys.database 카탈로그 뷰의 log_reuse_waitlog_reuse_wait_desc 열을 사용합니다.To discover what is preventing log truncation in a given case, use the log_reuse_wait and log_reuse_wait_desc columns of the sys.database catalog view. 자세한 내용은 sys.databases(Transact-SQL)를 참조하세요.For more information, see sys.databases (Transact-SQL). 로그 잘림을 지연시킬 수 있는 요소에 대한 자세한 내용은 트랜잭션 로그(SQL Server)를 참조하세요.For descriptions of factors that can delay log truncation, see The Transaction Log (SQL Server).

중요!!IMPORTANT!!
데이터베이스 복구 중에 9002 오류가 발생한 경우에는 문제를 해결한 다음 ALTER DATABASE database_name SET ONLINE을 사용하여 데이터베이스를 복구합니다.If the database was in recovery when the 9002 error occurred, after resolving the problem, recover the database by using ALTER DATABASE database_name SET ONLINE.

트랜잭션 로그가 꽉 찬 경우의 대처 방법으로 다음 방법을 사용할 수도 있습니다.Alternatives for responding to a full transaction log include:

  • 로그 백업Backing up the log.

  • 로그가 자동으로 증가될 수 있도록 디스크 공간 확보Freeing disk space so that the log can automatically grow.

  • 공간이 충분한 디스크 드라이브로 로그 파일 이동Moving the log file to a disk drive with sufficient space.

  • 로그 파일의 크기 증가Increasing the size of a log file.

  • 다른 디스크에 로그 파일 추가Adding a log file on a different disk.

  • 장기 실행 트랜잭션 완료 또는 중지Completing or killing a long-running transaction.

    이러한 방법에 대해서는 다음 섹션에서 설명합니다.These alternatives are discussed in the following sections. 해당 상황에 가장 적합한 대처 방법을 선택하십시오.Choose a response that fits your situation best.

로그 백업Back up the log

전체 복구 모델 또는 대량 로그 복구 모델에서 트랜잭션 로그가 최근에 백업되지 않은 경우 백업하면 로그 잘림이 방지될 수 있습니다.Under the full recovery model or bulk-logged recovery model, if the transaction log has not been backed up recently, backup might be what is preventing log truncation. 로그가 백업된 적이 없으면 에서 로그를 마지막 백업 시점까지 자를 수 있도록 두 개의 로그 백업을 만들어야 합니다 데이터베이스 엔진Database Engine .If the log has never been backed up, you must create two log backups to permit the 데이터베이스 엔진Database Engine to truncate the log to the point of the last backup. 로그를 자르면 새 로그 레코드를 위한 공간이 늘어납니다.Truncating the log frees space for new log records. 로그가 다시 꽉 차지 않게 하려면 자주 로그 백업을 수행합니다.To keep the log from filling up again, take log backups frequently.

트랜잭션 로그 백업을 만들려면To create a transaction log backup

중요IMPORTANT
데이터베이스가 손상된 경우 비상 로그 백업(SQL Server)을 참조하세요.If the database is damaged, see Tail-Log Backups (SQL Server).

디스크 공간 늘리기Freeing disk space

다른 파일을 삭제하거나 이동하여 데이터베이스의 트랜잭션 로그 파일이 들어 있는 디스크 드라이브의 디스크 공간을 늘릴 수 있습니다.You might be able to free disk space on the disk drive that contains the transaction log file for the database by deleting or moving other files. 디스크 공간에 여유가 있으면 복구 시스템이 자동으로 로그 파일을 확장할 수 있습니다.The freed disk space allows the recovery system to enlarge the log file automatically.

로그 파일을 다른 디스크로 이동Move the log file to a different disk

현재 로그 파일이 들어 있는 드라이브에서 충분한 디스크 공간을 확보할 수 없으면 공간이 충분한 다른 드라이브로 파일을 이동하십시오.If you cannot free enough disk space on the drive that currently contains the log file, consider moving the file to another drive with sufficient space.

중요!!IMPORTANT!! 로그 파일은 압축 파일 시스템에 저장할 수 없습니다.Log files should never be placed on compressed file systems.

로그 파일 이동Move a log file

로그 파일 크기 늘리기Increase log file size

로그 디스크에 사용 가능한 공간이 있으면 로그 파일의 크기를 늘릴 수 있습니다.If space is available on the log disk, you can increase the size of the log file. 로그 파일의 최대 크기는 로그 파일당 2TB입니다.The maximum size for log files is two terabytes (TB) per log file.

파일 크기 늘리기Increase the file size

자동 증가를 사용하지 않으며 데이터베이스가 온라인 상태이고 디스크에서 충분한 공간을 사용할 수 있는 경우If autogrow is disabled, the database is online, and sufficient space is available on the disk, either:

  • 수동으로 파일 크기를 늘려 단일 증분을 생성합니다.Manually increase the file size to produce a single growth increment.

  • ALTER DATABASE 문으로 FILEGROWTH 옵션에 대해 0이 아닌 증분을 설정하여 자동 증가를 설정합니다.Turn on autogrow by using the ALTER DATABASE statement to set a non-zero growth increment for the FILEGROWTH option.

참고 두 경우 모두 현재 크기 제한에 도달하면 MAXSIZE 값을 늘리세요.NOTE In either case, if the current size limit has been reached, increase the MAXSIZE value.

다른 디스크에 로그 파일 추가Add a log file on a different disk

ALTER DATABASE <database_name> ADD LOG FILE을 사용하여 공간이 충분한 다른 디스크의 데이터베이스에 새 로그 파일을 추가합니다.Add a new log file to the database on a different disk that has sufficient space by using ALTER DATABASE <database_name> ADD LOG FILE.

로그 파일 추가Add a log file

트랜잭션 중지Kill a transaction

프로세스를 종료해야 할 때 KILL 문을 사용해야 하는 경우도 있습니다.Sometimes you just have to end the process; you may have to use the KILL statement. 특히 중지하지 않을 중요한 프로세스가 실행 중일 때는 이 문을 신중하게 사용하세요.Please use this statement very carefully, especially when critical processes are running that you don't want to kill. 자세한 내용은 KILL (Transact-SQL)을 참조하세요.For more information, see KILL (Transact-SQL)

참고 항목See also

KB 지원 문서 - A transaction log grows unexpectedly or becomes full in SQL Server(트랜잭션 로그가 예기치 않게 커지거나 SQL Server에 가득 참) ALTER DATABASE(Transact-SQL) KB support article - A transaction log grows unexpectedly or becomes full in SQL Server ALTER DATABASE (Transact-SQL)
트랜잭션 로그 파일의 크기 관리 Manage the Size of the Transaction Log File
트랜잭션 로그 백업(SQL Server) Transaction Log Backups (SQL Server)
sp_add_log_file_recover_suspect_db(Transact-SQL)sp_add_log_file_recover_suspect_db (Transact-SQL)