ID 열이있는 SqlBulkCopy 삽입

c# identity-insert sqlbulkcopy sql-server

문제

SqlBulkCopy 개체를 사용하여 몇 백만 개의 생성 된 행을 데이터베이스에 삽입합니다. 유일한 문제는 삽입하려는 테이블에 ID 열이 있다는 것입니다. SqlBulkCopyOptionsSqlBulkCopyOptions.KeepIdentity 로 설정하고 ID 열을 0 , DbNull.Valuenull DbNull.Value . 그 중 어느 것도 효과가 없습니다. 나는 누군가가 나를 환상적으로 가르쳐 줄 수 있다면 나는 아주 간단한 것을 놓치고있는 것처럼 느껴진다. 감사!

편집 명확하게하기 위해 가져올 DataTable 에 ID 값이 설정되어 있지 않습니다. 나는 그들이 수입의 일부로 생성되기를 원한다.

편집 2 다음은 기본 SqlBulkCopy 개체를 만드는 데 사용하는 코드입니다.

SqlBulkCopy sbc = GetBulkCopy(SqlBulkCopyOptions.KeepIdentity);
sbc.DestinationTableName = LOOKUP_TABLE;

private static SqlBulkCopy GetBulkCopy(SqlBulkCopyOptions options = 
    SqlBulkCopyOptions.Default) 
{
    Configuration cfg = WebConfigurationManager.OpenWebConfiguration("/RSWifi");
    string connString =
    cfg.ConnectionStrings.ConnectionStrings["WifiData"].ConnectionString;
    return new SqlBulkCopy(connString, options);
}

수락 된 답변

대상 테이블에 ID를 할당하려면 SqlBulkCopyOptions.KeepIdentity 옵션을 사용하지 마십시오. 대신 원본에서 ID를 매핑하지 말고 원본에서 ID를 추출하여 SqlBulkCopy 로 보내지 마십시오.


인기 답변

BulkCopy 개체의 ColumnMappingColumnMapping ID 열을 매핑하지 않습니다. 식별 컬럼은 목표 데이터베이스에 의해 생성됩니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.