Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

증상

Microsoft SQL Server 2012 또는 SQL Server 2014 데이터베이스에서 AlwaysOn 가용성 그룹을 사용 하는 경우 열려 있는 대형 활성 트랜잭션이 존재 하 고 추가 로그 공간이 필요한 것으로 가정 합니다. 다음 이유 중 하나로 인해 로그 파일이 커질 수 없는 경우 트랜잭션에 실패 합니다.

  • 추가 파일 공간이 부족 합니다.

  • 로그 파일이 증가 하지 않도록 구성 되어 있습니다.

  • 로그 파일이 구성 된 최대 크기에 도달 했습니다.

또한 다음과 같은 오류 메시지가 나타납니다.

오류: 9002, 심각도: 17, 상태: 9. ' LOG_BACKUP ' (으)로 인해 데이터베이스 ' <데이터베이스 이름> '에 대 한 트랜잭션 로그가 가득 찼습니다.

로그 백업을 실행 한 후에는 다른 9002 오류 메시지가 표시 됩니다.

오류: 9002, 심각도: 17, 상태: 9. ' ACTIVE_TRANSACTION ' (으)로 인해 데이터베이스 ' <데이터베이스 이름> '에 대 한 트랜잭션 로그가 가득 찼습니다.

다른 로그 백업이 끝나면 다른 9002 오류 메시지와 함께 5901 오류 메시지가 표시 됩니다.

오류: 9002, 심각도: 17, 상태: 9. ' AVAILABILITY_REPLICA ' (으)로 인해 데이터베이스 ' <데이터베이스 이름> '에 대 한 트랜잭션 로그가 가득 찼습니다.

로그 공간이 부족 하 여 데이터베이스 <데이터베이스 이름>에 검사점 레코드를 쓸 수 없습니다. 데이터베이스 관리자에 게 문의 하 여 로그를 자르거나 데이터베이스 로그 파일에 더 많은 공간을 할당 합니다. 오류: 5901, 심각도: 16, 상태: 1. 데이터베이스 ' <데이터베이스 이름> '에 속한 하나 이상의 복구 단위가 검사점을 생성 하지 못했습니다. 이 문제는 일반적으로 디스크 또는 메모리와 같은 시스템 리소스가 부족 하거나 일부 경우에는 데이터베이스 손상으로 인해 발생 합니다. 오류 로그의 이전 항목에서이 오류에 대 한 자세한 내용을 확인 하세요.

트랜잭션을 롤백하는 동안 후속 검사점 또는 로그 백업을 수행할 때 다음과 같은 오류 메시지가 나타날 수 있습니다.

메시지 3052, 수준 16, 상태 1, 줄 4 백업 로그가 데이터베이스 ' <데이터베이스 이름> '에 대 한 업데이트를 로그할 수 없습니다. 후속 로그 백업은 ' <LSN id 1> '에서 ' <lsn id 2> '으로 백업 지점을 진행 하는 데 필요 하며 로그 공간을 로깅할 수 있게 되었습니다.

이러한 메시지를 받으면 더 이상 새 트랜잭션을 데이터베이스에 제출할 수 없으며 로그 파일을 확장 하거나 다른 로그 파일을 추가할 수 없습니다.

해결 방법

이 문제는 SQL Server의 다음과 같은 누적 업데이트에서 처음 수정 되었습니다.

각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 다운로드 하 여 설치 하는 것이 좋습니다.

해결 방법

다음 해결 방법을 사용 하 여 로그를 자르고 활동을 다시 시작할 수 있습니다.

  1. 보조 복제본 last_hardened_lsn 확인 하려면 각 보조 복제본을 확인 합니다 ( sys.dm_hadr_database_replica_states참조) last_hardened_lsn기본 복제본을 찾습니다. 기본 복제본 인스턴스에 연결 된 다음 쿼리를 실행 하 여이 작업을 수행할 수 있습니다.

    SELECT ags.name as AGGroupName,    ar.replica_server_name as InstanceName,    hars.role_desc,    db_name(drs.database_id)as DBName,    drs.last_hardened_lsn, drs.log_send_queue_size,    drs.synchronization_state_desc as SyncState,    ar.availability_mode_desc as SyncMode,    CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id    FROM sys.dm_hadr_database_replica_states drs    LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id    LEFT JOIN sys.availability_groups ags  ON ar.group_id = ags.group_id    LEFT JOIN sys.dm_hadr_availability_replica_states hars        ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id      WHERE db_name(drs.database_id) = '<database name>'
  2. 주 복제본

    • 가용성 그룹에서 데이터베이스를 제거 합니다.

    • 가용성 그룹에 데이터베이스를 다시 추가 합니다.

  3. 각 보조 복제본에서

    • 가용성 그룹에 데이터베이스를 다시 추가 합니다.

가용성 그룹에서 데이터베이스를 제거 하면 해당 로그를 즉시 자르고 로그 공간을 확보할 수 있습니다. 각 보조 복제본의 last_hardened_lsn 주 복제본과 동일한 경우 가용성 그룹에서 데이터베이스를 제거 하 고 각 보조에 대 한 데이터베이스를 다시 추가 하는 동안 로그 백업을 수행 하지 않으면 보조 복제본이 오류 없이 다시 추가 되거나 보조에 로그 백업을 복원할 필요가 없습니다. 보조 복제본이 주 복제본에 대해 최신 상태가 아닌 경우 보조 복제본이 처리 될 수 있으려면 가용성 그룹에서 데이터베이스를 제거 해야 할 수 있습니다. 가용성 그룹에 다시 추가 하기 전에 먼저 로그 백업을 복원 하 고 보조 복제본에 데이터베이스를 저장 한 다음 전체 및 트랜잭션 로그 데이터베이스 백업으로 다시 시드해야 합니다.

상태

Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×