증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
롤링 업그레이드의 일부로 가용성 그룹의 보조 복제본을 호스트 하는 서버에서 Microsoft SQL Server 2014 또는 Microsoft SQL Server 2012 서비스 팩 2(sp2)를 실행 하 고 있습니다.
-
다음 업데이트 중 하나를 SQL Server 설치에 적용 했습니다.
-
SQL Server 2014 누적 업데이트 5
-
SQL Server 2012 서비스 팩 2 누적 업데이트 4
-
SQL Server 2012 서비스 팩 2 누적 업데이트 3
중요 이 문서에 나와 있는 핫픽스는 이러한 누적 업데이트를 대체 합니다. 아직 수행 하지 않은 경우에는이 업데이트를 설치 하지 마세요.
-
-
누적 업데이트 설치를 완료 하려면이 보조 복제본을 다시 시작 합니다.
-
업데이트 된 보조 복제본을 주 역할로 전환 하는 가용성 그룹을 장애 조치 (인) 합니다.
이 시나리오에서는 SQL Server를 실행 중이 고 현재 가용성 그룹의 기본 복제본을 호스트 하는 서버에서 다음 현상 중 하나 이상이 발생할 수 있습니다.
-
보조 복제본은 "동기화 하지 않음"으로 보고 됩니다.
-
Sys.dm_exec_requests를 쿼리하면 사용자 세션과 해당 명령이 "DB_STARTUP"으로 보고 되는 세션 사이에 간헐적인 잠금 차단이 표시 됩니다. 또한 검사점 과 DB_STARTUP 명령 사이에 차단 하는 것을 볼 수 있습니다.
-
가용성 데이터베이스 중 하나를 복구 하는 세션과 관련 된 교착 상태는 SQL Server 오류 로그에 보고 됩니다. 이러한 로그는 다음과 유사 합니다. <date/time> spid<xx> Recovery is writing a checkpoint in database <dbname/dbid>. This isan informational message only. No user action is required.<date/time> spid<xx> Recovery completed for database <dbname/dbid> in <x> second(s) (analysis<x> ms, redo <x> ms, undo <x> ms.) This is an informational message only. No user action is required.…<date/time> spid<xx> Error: 1205, Severity: 13, State: 28.<date/time> spid<xx> Transaction (Process ID <xx>) was deadlocked on lock resources with anotherprocess and has been chosen as the deadlock victim. Rerun the transaction.
-
Microsoft SQL Server Service Broker에서 가용성 데이터베이스를 사용 하는 경우 가용성 데이터베이스의 메시지가 성공적으로 처리 되지 않을 수 있습니다. 프로필러 추적 도구를 시작 하 고 "Broker: 메시지 분류" 이벤트를 캡처하면 다음 이벤트가 캡처됩니다.
9791, 보낸 사람의 데이터베이스에서 broker가 비활성화 됨
참고 이는 체계적인 문제가 아닙니다. 이 문제가 발생 하지 않고 AlwaysOn 구성에서 이러한 누적 업데이트를 적용할 수 있습니다. 이러한 누적 업데이트를 이미 적용 했 고이 문제가 발생 하지 않은 경우 시스템은 영향을 받지 않으며,이 정보는 귀하에 게 적용 되지 않습니다.
원인
이 문제는 시스템 스레드와 사용자 연결 간에 경쟁 조건이 발생 하는 경우가 종종 있기 때문에 발생 합니다. 이렇게 하면 누적 업데이트의 패칭 논리가 업데이트 프로세스를 완료 하는 데 필요한 잠금을 얻을 수 없습니다.
해결 방법
이 문제를 해결 하려면 다음과 같은 필수 주문형 (COD) 핫픽스를 적용 합니다.
3034679 FIX: AlwaysOn 가용성 그룹이 동기화 되지 않는 것으로 보고 될 수 있음중요 다음과 같은 누적 업데이트 대신이 COD 핫픽스를 적용 해야 합니다.
-
SQL Server 2014 누적 업데이트 5
-
SQL Server 2012 서비스 팩 2 누적 업데이트 4
-
SQL Server 2012 서비스 팩 2 누적 업데이트 3
참고 이러한 누적 업데이트를 이미 적용 한 경우 다음 해결 방법을 사용 하 여이 문제를 해결 해야 합니다.
해결 방법
이 문제는 데이터베이스를 주 역할로 전환 하는 동안 가용성 데이터베이스와 사용자 세션 간의 충돌 때문에 발생 하므로이 경합을 제거 하 여 데이터베이스가이 상태에서 복구 될 수 있도록 해야 합니다. 이 문제를 해결 하려면 다음 단계를 따르세요.
-
지정 된 순서로 다음 메서드를 실행 합니다.
방법 1: 데이터베이스 액세스 제거"현상" 절에 나와 있는 증상이 발생 하는 경우에는 다음 단계 중 하나 또는 모두를 사용 하 여 잠금 차단 조건을 제거 해야 합니다.
-
쿼리를 사용 하 여 가용성 데이터베이스에서 잠금 차단이 발생 하는 세션을 찾을 sys.dm_exec_requests . 이 세션을 종료 하려면 KILL 문을 사용 합니다.
-
가용성 데이터베이스에 액세스 하는 응용 프로그램을 사용 하지 않도록 설정 하거나 중지 합니다.
방법 1이 문제가 해결 되지 않으면 방법 2로 이동 합니다.
방법 2: SQL Server 호스트 서버 다시 시작응용 프로그램 액세스 및 사용자 액세스가 계속 사용 하지 않도록 설정 되어 있으면 해당 가용성 데이터베이스를 호스트 하는 SQL Server 인스턴스를 다시 시작 합니다. 이렇게 하려면 다음 단계를 수행하세요.
-
가용성 그룹의 자동 장애 조치를 사용 하지 않도록 설정 합니다.
-
주 복제본을 호스트 하는 해당 SQL Server 인스턴스를 다시 시작 합니다.
-
가용성 그룹의 자동 장애 조치 (failover)를 사용 하도록 설정 합니다.
-
-
영향을 받는 데이터베이스가 완전히 복구 되 면 응용 프로그램 및 사용자 연결을 다시 설정 합니다.
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.
참조
이 문제의 영향을 받는 누적 업데이트에 대 한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조 하세요.