문제

0x80040237 중복된 키를 삽입할 수 없습니다.

CrmService를 통해 MSCRM4.0에 대한 가져오기 루틴을 작성하려고 합니다.현재까지는 성공적이었습니다.처음에는 CRM에서 레코드의 기본 키를 생성하도록 했습니다.하지만 내 고객은 사용자 지정 엔터티의 키를 미리 정의된 값으로 설정하는 기능을 원했습니다.잠재적으로 이를 통해 설치 프로그램에서 생성된 데이터와 설치 후 생성된 데이터를 알 수 있습니다.

CrmService.Update() 메서드를 호출할 때 Guids가 설정될 수 있는지 확인하기 위해 테스트했고 결과는 원하는 값으로 레코드가 생성되었음을 나타냈습니다.가져오기를 실행했는데 모든 것이 성공한 것 같았습니다.가져오기 파일의 유효성 검사 코드를 수정하면서 데이터를 삭제하고(crm 브라우저 인터페이스를 통해) 다시 가져오기를 시도했습니다.불행하게도 이제는 중복 키 오류가 발생합니다.

이 오류가 발생하는 이유는 무엇입니까?Crm 인터페이스가 기록을 삭제합니까, 아니면 여전히 존재하지만 사용자의 눈에는 숨겨져 있습니까?삭제된 레코드를 영구적으로 삭제하고 Guid를 무료로 사용할 수 있는 방법이 있습니까?실제 환경에서는 이러한 Guid가 존재하지 않았을 것입니다. 그러나 개발 중에는 이러한 가져오기가 성공해야 합니다.

그런데 이 문제가 있다는 점을 고려하면 이는 Guids를 정적으로 설정하는 것이 권장되지 않는다는 의미입니까?

도움이 되었습니까?

해결책

지금까지 엔터티가 소프트 삭제되어 있다고 말할 수 있으므로 귀하 (또는 삭제 서비스)가 데이터베이스에서 엔티티를 삭제하지 않는 한 해당 GUID를 재사용 할 수 없습니다.

예를 들어 Leadbase 테이블에서 DeletionStateCode라는 필드가 있습니다. 0의 값은 레코드가 삭제되지 않았 음을 의미합니다.

2의 값은 삭제 레코드를 표시합니다. 테이블에서 해당 레코드를 물리적으로 삭제하기 위해 2 시간마다 실행되는 삭제 서비스가 있습니다.

다른 팁

Zahir가 옳다고 생각합니다. 삭제 서비스를 실행하고 다시 시도하십시오. 여기에는 몇 가지 정보가 있습니다. http://blogs.msdn.com/crm/archive/2006/10/24/purging old-instances-of-workflow-in-microsoft-crm.aspx

자히르의 말이 맞습니다.

기록을 가져오고 삭제한 후, 원하는 시간에 삭제 서비스를 시작할 수 있습니다. 이 도구.그러면 가져오기 및 다시 가져오기를 더 쉽게 테스트할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top