반응형
1. 원인 : Sql커낵션(Sql Connection) 설정시에 트랜잭션(Transaction)이 설정된 상황에서 SqlBulkCopy설정에 트랜잭션을 설정하지 않을경우에 발생합니다.
2. 해결방법 : SqlBulkCopy설정에 트랜잭션을 추가로 설정해주면 정상적으로 데이터가 등록됩니다.
3.샘플코드
try
{
//시스템에 공통으로 사용되는 Sql커낵션 접속
sqlConnection.Open();
//Sql 트랜잭션생성
var sqlTransaction = sqlCon.BeginTransaction();
try
{
//SqlBulkCopy 트랜잭션설정
var sqlBulkCopy = new SqlBulkCopy(sqlConnection, SqlBulkCopyOptions.Default, sqlTransaction);
//등록될 테이블의 컬럼명을 매핑
foreach (DataColumn column in dt.Columns)
sqlBulkCopy.ColumnMappings.Add(column.ToString(), column.ToString());
//등록될 테이블명 설정
sqlBulkCopy.DestinationTableName = dt.TableName;
//테이블에 데이터 등록
sqlBulkCopy.WriteToServer(dt);
//DB에 등록확정
sqlTran.Commit();
}
catch
{
//에러시에 롤백실행
sqlBulkCopy.Rollback();
throw;
}
}
catch
{
//에러시에 Sql커낵션 닫기
sqlBulkCopy.Close();
}
반응형
'C#' 카테고리의 다른 글
BackgroundWorker이벤트에 설정된 처리(DoWork)를 취소하는 방법 (0) | 2022.04.20 |
---|---|
C# Linq의 Group By가 복수로 필요할 경우의 처리방법 (0) | 2022.01.31 |
DataGrid의 Binding ItemSource 업데이트하기 (0) | 2021.08.29 |
LINQ Repeat 사용법 (0) | 2021.08.13 |
LINQ Range 사용법 (0) | 2021.08.09 |
댓글