SQL Server 미러링 아키텍처를 사용할 때 미러 서버에서 어설션 실패
이 문서에서는 SQL Server 미러링 아키텍처를 사용할 때 파트너 서버에서 발생할 수 있는 Microsoft SQL Server 어설션 실패에 대해 설명합니다.
원래 제품 버전: SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008
원래 KB 번호: 2729953
증상
SQL Server 미러링 아키텍처에서 파트너(미러) 서버에서 SQL Server 어설션 검사 오류가 발생할 수 있습니다. 이 경우 자세한 내용은 SQL Server 오류 로그를 검사. 로그에서 다음 메시지와 유사한 오류 메시지를 찾을 수 있습니다. 이 오류는 일반적으로 미러 쌍을 다시 빌드해야 한다는 것을 의미합니다.
SQL Server 어설션: 파일: loglock.cpp, line=834 실패한 어설션 = 'result == LCK_OK' . 이 오류는 타이밍과 관련이 있을 수 있습니다. 문을 다시 실행한 후에도 오류가 지속되면 DBCC CHECKDB를 사용하여 구조적 무결성을 위해 데이터베이스를 검사 서버를 다시 시작하여 메모리 내 데이터 구조가 손상되지 않도록 합니다.
오류: 3624, 심각도: 20, 상태: 1.
일반적으로 어설션 실패는 소프트웨어 버그 또는 데이터 손상으로 인해 발생합니다. 데이터베이스 손상을 검사 실행해 보세요DBCC CHECKDB
. 설치하는 동안 Microsoft에 덤프를 보내는 데 동의하면 미니덤프가 Microsoft로 전송됩니다. 최신 서비스 팩 또는 기술 지원의 QFE에서 Microsoft에서 업데이트를 사용할 수 있습니다.
참고
이 문제가 발생하면 SQL Server 오류 로그 폴더에 미니덤프 파일이 생성됩니다. 이 파일에는 SQLDumpnn.mdmp 파일 이름과 유사한 이름이 있습니다.
원인
이 문제는 다양한 시나리오에서 발생할 수 있습니다. 각 시나리오에는 다른 원인과 해결 방법이 있으며 각 시나리오에서 동일한 오류 메시지와 어설션 오류가 발생할 수 있습니다.
참고
- 오류 서명은 매우 구체적인 것으로 보이지만 실제 오류는 실패한 어설션으로 인해 발생합니다. 예를 들어 오류는 프로세스 전체 크래시가 발생하지 않고 정상 상태의 유효성을 검사하는 SQL Server 코드에서 사전 검사 수행하는 어설션으로 인해 발생할 수 있습니다.
- 실제 원인을 쉽게 확인할 수 없습니다. Microsoft 고객 지원 서비스는 일반적으로 원인을 결정합니다. 일반적으로 주 데이터베이스 전체 백업 파일과 문제의 시간을 다루는 트랜잭션 로그 백업을 수집하여 수행됩니다. 또한 특정 설정에서 문제를 재현하려면 미러 전체 프로세스 덤프 파일이 필요할 수 있습니다.
해결 방법
이 문제를 resolve SQL Server 버전에 대한 최신 수정 사항을 가져옵니다. 자세한 내용은 다음 표를 참조하세요.
원인 | 기술 자료 문서 | 첫 번째 수정 |
---|---|---|
기본 및 미러 간의 다른 잠금 동작 | 2938828 수정: 데이터베이스 미러링이 어설션에 도달하고 미러링 세션이 2012년 SQL Server 또는 2014년 SQL Server 일시 중단됨 상태를 표시합니다. | SQL Server 2014의 2931693 누적 업데이트 1, SQL Server 2012 SP1의 누적 업데이트 9 2931078 |
Check_Constraints OFF를 사용하여 대량 삽입/BCP | SQL Server 2012 | |
암호화 키 변경: 데이터베이스 master 키, 서버 instance master 키 | SQL Server 2012 |
참고
- 앞의 표에서 마지막 열에는 수정 사항이 포함된 첫 번째 빌드만 나열됩니다. SQL Server 빌드는 누적되므로 SQL Server 2014 SP1과 같은 이후 빌드에는 이러한 수정 사항이 포함됩니다. 그러나 이러한 빌드는 테이블에 나열되지 않습니다.
- SQL Server 버전의 최신 서비스 팩을 가져오는 방법에 대한 자세한 내용은 버전, 버전 및 업데이트 수준 확인을 참조하세요. BCP/대량 삽입 시나리오는 SQL Server 2008 및 SQL Server 2008 R2에 대해 고정되지 않은 상태로 유지되는 일반적인 시나리오이며 해당 버전에서 lck_ok 어설션의 가장 가능성이 있는 알려진 원인입니다. 이 문제는 2012년 SQL Server 처음 해결되었습니다. 이전 버전에서 이 문제를 수정하지 않는 이유는 SQL Server 트랜잭션 로그 내부를 다시 아키텍처해야 하기 때문입니다. 이러한 변경 내용은 SQL Server 주요 릴리스에만 포함될 수 있습니다.