문제가 발생하는 경우 기본적으로 매우 큰 데이터 테이블 (50,000 행)이 있습니다.이 함수를 통해 SqlBulkCopy를 사용하여 작성했습니다.SqlBulkCopy는 예외없이 하나의 행이있는 데이터 테이블을 삽입 할 때 시간 초과가 발생합니다.
public static void DoSqlBulkCopy(string connectionString, string destinationTableName, DataTable dataTable, int batchSize = 2000)
{
using (var bulk = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.CheckConstraints))
{
bulk.BatchSize = batchSize;
bulk.DestinationTableName = destinationTableName;
for (int i = 0; i < dataTable.Columns.Count; i++)
{
bulk.ColumnMappings.Add(dataTable.Columns[i].ColumnName, dataTable.Columns[i].ColumnName);
}
bulk.WriteToServer(dataTable);
}
}
이 코드는 다른 데이터 항목에도 적용되었지만이 데이터 세트에서는 WriteToServer에만 고정되어 있습니다.
나는 약간의 찰과상을 입었고 SQL 프로파일 러를 작동 시켰지만 아무런 활동도 없었다.
제안 사항? 그것은 어느 쪽도 시간 초과하지 않는다, 나는 그것을 밤새도록 놓았다.
어떻게 열 매핑 루프없이 진행됩니까? – artm
일괄 복사시 프로파일 러에서 명령문을 catch 할 수 없습니다. 배치없이 시도 했습니까? 쓰기에 걸려있는 것을 어떻게 알았습니까? try-catch 블록이 있습니까? datatable에서 1 행으로 이것을 재현 할 수 있습니까? –
아 ... 그래서 1 행으로 같은 문제가 발생합니다. 뭔가 시간 초과하지 않는 이상한 일이지만 데이터베이스를 차단해야합니다. try catch는 없으며, 코드 라인 전후에 콘솔에 로깅 만하면됩니다. – NibblyPig