SqlBulkCopy를 사용하여 서버에 레코드 일괄 처리를 삽입하고 있습니다. 고유 한 제약으로 인해 하나의 레코드가 실패하면 전체 일괄 처리를 롤백하지 않고 대신 기존 레코드를 업데이트하려고합니다.한 삽입이 실패 할 때 SqlBulkCopy 트랜잭션 롤백을 중지하십시오.
벌크 삽입이 완료되면 실패한 레코드 키 값을 기록한 다음 되돌아 가서 개별적으로 주소를 지정하기를 바랬습니다.
그러나 SqlBulkCopy가 실패시 트랜잭션을 롤백하지 않거나 실패한 레코드에 대한 정보를 얻는 방법을 알 수 없습니다.
레코드를 SqlBulkCopy DataTable에 추가하기 전에 존재하는지 확인할 수는 있지만 상당한 오버 헤드가 추가됩니다.
벌크 삽입 후에 스테이징 테이블과 다른 sproc을 사용하여 응답을 표시하는 답변 here을 확인했지만 sproc은 각 레코드를 개별적으로 처리하여 새로 삽입하거나 업데이트해야한다고 생각합니다. 기존 레코드 - 매우 많은 시간이 소요됩니다.
다른 도움말이나 지난 4 년 동안 변경된 사항이 없습니까?
나는 위와 같은 간단한 진술을 통해 당신이 옳다고 생각합니다. 왜 병합을 사용해야합니까? – Graeme