2016-08-01 5 views
0

밤에 자동으로 실행되는 예약 된 작업을 통해 SQL Server Bulkinsert를 사용하여 XML 파일에서 DB로 많은 양의 데이터를 업로드합니다.좀비 레코드를 대량 삽입 할 수 있습니까?

+====================+  +====================+ 
+ INVOICE   +  + INVOICE LINES  + 
+====================+  +====================+ 
+ PK + InvoiceId  +-I-┐ + PK + InvoiceLineId + 
+ + ...   + └IX-+ FK + InvoiceId  + 
+ + ...   +  + + ...   + 
+====================+  +====================+ 

내 소스가 신뢰할 수있는 데이터로 날을 제공 할 것으로 기대되지만, 실수/오류가 발생 않습니다

배경

이 더미 모델을 고려하십시오. Invoice LinesInvoiceId FK 잠재적 테이블 Invoice에 존재하지 않는 InvoiceId를 가리 수 있습니다.

내 질문

잘못 원인 좀비 기록을 Bulkinsert하는 데이터를 참조으로 공급 할 수 있습니까?

제약 조건을 다시 설정하면 삽입하면 경고가 표시됩니까?

그렇다면, 이러한 감지 인간이 될 것입니다. 업로드 후 정리를 만들 수 있습니다. 사전 업로드 수표는 매우 복잡하고 말한대로 내 책임이 아닙니다. 데이터베이스에

기록을 저장 그들이 종속성 대한 참조가 때문 통해 존재 이유가 없다 :

PS

내가 좀비 기록으로 무엇을 의미하는지에 추가 명확하게하려면 외래 키 은 존재하지 않는 다른 테이블에 있습니다.

는 지금까지 내가 알고 있어요으로 그는 일반적으로 인정 된 용어입니다.

+0

과 나쁜 행을 검색 할 수 있습니다? – TheGameiswar

+2

가장 쉬운 방법은 NOT EXISTS를 사용하여 감사 보고서를 실행하여 사전에 찾아야합니다. FK 제약 조건을 다시 설정해도 제약 조건이 깨지지는 않지만 단순한 SELECT 조건이 적용됩니다. 이 나쁜 기록으로 무엇을 할 것입니까? 앞으로 사람을 확인하거나 삭제할 것인가? –

+0

제약 조건을 되돌릴 때 제약 조건이 실패합니다. – TheGameiswar

답변

1

네, INVOICE LINES 행이 존재하지 않는 CHECK_CONSTRAINTS 옵션

CHECK_CONSTRAINTS를 지정하지 않은 경우, INVOICE ("좀비 기록"당신이 그것을 넣어)이 지정 참조 일으킬 수있는 대상 테이블에있는 모든 제약 또는 대량 가져 오기 작업 중에보기를 확인해야합니다. CHECK_CONSTRAINTS 옵션을 사용하지 않으면 모든 CHECK 및 FOREIGN KEY 제약 조건이 무시 , 그리고 수술 후, 테이블에 제약 이 같은 신뢰하지 표시됩니다.

https://msdn.microsoft.com/en-us/library/ms188365.aspx

당신은 후 부하 쿼리 좀비 기록 무엇

SELECT * 
FROM [INVOICE LINES] il 
    WHERE NOT EXISTS (
    SELECT 1 FROM INVOICE i WHERE i.InvoiceId =il.InvoiceId) ; 
관련 문제