OS는 Windows 2019 Server 에다가 SQL Server 2017 Express를 사용중입니다…
BulkCopy를 사용해서 데이터를 동기화하는데 함수를 아래와 같이 만들어 사용중인데 자꾸 오류가 발생하네요…
public bool BulkInsertDataTable(string tableName, DataTable dataTable)
{
bool isSuccuss;
try
{
using (SqlConnection SqlConnectionObj = new SqlConnection(global.LocalConnStr))
{
SqlConnectionObj.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(SqlConnectionObj, SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.UseInternalTransaction | SqlBulkCopyOptions.KeepIdentity, null))
{
bulkCopy.DestinationTableName = tableName;
bulkCopy.WriteToServer(dataTable);
isSuccuss = true;
}
}
}
catch (Exception ex)
{
WriteLog(ex, visible: false);
isSuccuss = false;
}
return isSuccuss;
}
문제가 되는 것은 bulkCopy.WriteToServer(dataTable); 이 부분입니다.
여기서 약 30초 간 Hang이 걸린 뒤에 오류를 뿜고 나가버리는데요…
(시작과 끝 부분에 시간을 변수에 담아놓고 비교해보니 33초가 걸렸다는 로그가 찍혀있습니다.)
오류메시지가 뭐였는지 잘 기억이 나질 않습니다ㅡ.ㅡ;;; 그냥 명령에 실패했다거나 시간을 초과했다는 메시지였던거 같아요…
(현장 가서 확인하느라 정신이 없어서 이 부분 메모를 깜빡해버렸어요…)
일단 구조상으로는 클라이언트로 명령을 내리면 클라이언트 8대가 동시에 각자 bulkCopy를 시도하며,
이상이 없는 상태에서는 0.5초 이내에 완료되는 작업입니다. 데이터 내용도 많지 않고요 (10row 미만)
Connection Leak가 발생하나 싶어서 테스트해봐도 재현은 안되니 참 미칠 노릇이네요…ㅎㅎ
Express의 한계로 인해 동시접속 문제이거나, 메모리의 한계일까요? (DB설정으로는 4기가에 맞춰놓았습니다.)
이런 문제를 본 적이 있거나 해결하신 경험이 있는 업계 선배님들의 조언 부탁드립니다…