대량 삽입 또는 BCP 문을 실행하려고 할 때 어설션 오류 SQL Server
이 문서는 또는 BCP
작업을 실행 BULK INSERT
하려고 할 때 발생하는 문제를 resolve 데 도움이 됩니다.
원래 제품 버전: SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
원래 KB 번호: 2700641
증상
다음과 같은 경우를 생각해볼 수 있습니다.
서버 A 및 서버 B는 Microsoft SQL Server 2008 또는 SQL Server 2008 R2를 실행합니다.
서버 A와 서버 B 간에 데이터베이스 미러링을 설정합니다.
주 데이터베이스에서
BULK INSERT
또는BCP
문을 실행합니다.참고
기본적으로
CHECK_CONSTRAINTS
옵션은 또는BCP
문을 실행할 때 꺼짐으로BULK INSERT
설정됩니다.데이터베이스 미러링이 중단되고 데이터베이스 미러링 세션이 SUSPENDED 상태로 들어갑니다.
이 시나리오에서는 미러 서버에서 어설션이 발생합니다. 따라서 미니 덤프 파일은 SQL Server 로그 폴더에 만들어집니다. 또한 미러 서버의 SQL Server 오류 로그에 다음 오류가 표시됩니다.
참고
이 문제를 resolve 데이터베이스 미러링을 다시 초기화해야 합니다.
원인
이 문제는 주 데이터베이스의 트랜잭션 로그에 있는 잠금 호환성 정보가 미러 서버로 전송되지 않기 때문에 발생합니다.
해결 방법
이 문제를 해결하려면 옵션을 사용하여 주 데이터베이스에서 또는 BCP
문을 실행 BULK INSERT
합니다CHECK_CONSTRAINTS
.
참고
이 CHECK_CONSTRAINTS
옵션을 사용하면 성능이 저하됩니다. 그러나 미러 서버의 잠금 어설션은 발생하지 않습니다.
추가 정보
BULK INSERT
또는 BCP
작업 중에 자식 트랜잭션이 옵션을 해제합니다CHECK_CONSTRAINTS
. 이 자식 트랜잭션은 부모 트랜잭션 잠금과 호환되는 잠금을 사용합니다. 호환성 정보는 주 데이터베이스의 트랜잭션 로그에 저장됩니다. 따라서 주 데이터베이스에 자식 트랜잭션 잠금 요청이 부여됩니다.
그러나 이 호환성 정보는 미러 서버로 전송되지 않습니다. 따라서 자식 트랜잭션 잠금 요청은 미러 서버의 부모 트랜잭션 잠금과 호환되지 않습니다. 이 시나리오는 미러 서버에서 어설션을 발생합니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기