웹 화면을 개발 할 경우 조회 시간이 길어 타임아웃 에러가 발생 할 때가 있다.
쿼리 튜닝 작업을 통해 속도를 개선하면 가장 좋겠지만, 튜닝을 해도 시간을 단축 시키지 못 할 경우 어쩔 수 없이 타임아웃 시간을 설정 해 주어야 한다.
업무시스템이 아닌 일반 홈페이지는 당연히 쿼리 튜닝을 해야 할 것이다. 화면이 오픈되기까지 3초 이상 시간이 지연되면 사람들은 보통 사이트를 종료한다고 한다.
튜닝에 대한 부분은 다음에 다루기로 하고 이번 포스팅에서는 타임아웃으로 인한 오류 발생을 방지하는 방법에 대하여 알아보도록 하자.
■ 타임아웃 발생 소스
bool bolReturn = false; ClsConn cnn = null; DataSet ds = new DataSet(); SqlDataReader dr = null; try { cnn = new ClsConn(); SqlParameter[] sParam = { new SqlParameter ("@Param1", txtDt1.Text.Replace("-", "")), new SqlParameter ("@Param2", txtDt3.Text.Replace("-", "")), new SqlParameter ("@Param3", txtDt3.SelectedValue.ToString()) }; dr = SqlHelper.ExecuteReader(cnn.ConnectionString, "프로시저명", sParam);
bolReturn = dr.HasRows; grdList.DataSource = dr; grdList.DataBind(); } catch (Exception err) { return false; } finally { if (ds != null) ds.Dispose(); if (comSql != null) comSql.Dispose(); } |
■ 타임아웃 설정을 통해 타임아웃 발생되지 않도록 하였다.
bool bolReturn = false; SqlConnection conn = new SqlConnection(new ClsConn().ConnectionString); SqlDataReader dr = null; SqlCommand cmd = null; try { cmd = new SqlCommand("프로시저명", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandTimeout = 999999; //타임아웃 설정 cmd.Parameters.Add("@FPrtDt", SqlDbType.VarChar, 8); cmd.Parameters.Add("@TPrtDt", SqlDbType.VarChar, 8); cmd.Parameters.Add("@State", SqlDbType.VarChar, 8); cmd.Parameters["@Param1"].Value = txtDt1.Text.Replace("-", ""); cmd.Parameters["@Param2"].Value = txtDt2.Text.Replace("-", ""); cmd.Parameters["@Param3"].Value = txtDt3.SelectedValue.ToString(); conn.Open(); dr = cmd.ExecuteReader(); bolReturn = dr.HasRows; grdList.DataSource = dr; grdList.DataBind(); conn.Close(); } catch (Exception err) { return false; } finally { conn.Close(); if (dr != null) ((IDisposable)dr).Dispose(); } return bolReturn; |
'프로그래밍 > JAVA, .NET, 기타' 카테고리의 다른 글
[c#오류] DropDownList 여러 항목을 선택할 수 없습니다 (6) | 2018.05.04 |
---|---|
자바스크립트 prompt 함수 예제 (6) | 2018.01.23 |
[C#] LINQ 활용 방법 (0) | 2017.12.18 |
[닷넷] C# RenderControl 함수로 엑셀 내려받기 기능 구현 (0) | 2017.09.19 |
[BAT] 명령어 간단한 예제로 맛보기 (0) | 2017.09.04 |