CommandTimeout

sqlCom.CommandTimeout = 60;

의미

CommandTimeout명령 실행 제한 시간, 단위: 초

  • 기본값:30초
  • 예제에서는 60으로 설정 → SQL 실행이 60초 안에 끝나지 않으면 타임아웃 예외가 발생합니다
    두 가지 타임아웃 설정을 구분해야 합니다
  1. ConnectionTimeout:연결 문자열에 설정, 데이터베이스 연결 수립 타임아웃
  2. CommandTimeout:연결 성공 후 적용, SQL 구문 실행 대기 타임아웃

전체 예제 코드

private void button1_Click(object sender, EventArgs e)
{
    string connectionString = "Data Source=.;Initial Catalog=db;User ID=sa;pwd=xxx";
    // using 구문으로 SqlConnection 리소스를 자동 해제
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();
        SqlCommand sqlCom = new SqlCommand();
        // 연결 객체 바인딩 (두 방식 중 하나만 사용)
        sqlCom.Connection = conn;

        sqlCom.CommandText = "select 1";
        // SQL 실행 타임아웃 60초로 지정
        sqlCom.CommandTimeout = 60;

        object obj = sqlCom.ExecuteScalar();
        MessageBox.Show(obj.ToString());
    }
    // using 블록이 끝나면 conn이 자동으로 닫히고 해제되므로 conn.Close()를 수동으로 호출할 필요 없음
}Code language: JavaScript (javascript)

주의사항

  1. 음수는 설정할 수 없습니다. 0은 무한 대기를 의미하며 권장하지 않습니다. 프로그램이 멈출 수 있습니다
  2. 현재 해당 SqlCommand 인스턴스에만 적용되며 전역 설정이 아닙니다
  3. 저장 프로시저 실행이 오래 걸릴 때 이 값을 늘립니다.
    실무에서는 SQL 최적화를 먼저 진행하고 단순히 타임아웃만 무작정 키우지 마세요.

간편 초기화 방식 (객체 이니셜라이저)

SqlCommand sqlCom = new SqlCommand("select 1", conn)
{
    CommandTimeout = 60
};Code language: JavaScript (javascript)

연결 타임아웃 설정

연결 문자열 안에 작성하며 CommandTimeout과 서로 영향을 주지 않습니다:

Data Source=.;Initial Catalog=db;User ID=sa;Password=xxx;Connect Timeout=15

Connect Timeout=15 → 데이터베이스 연결 시도 최대 대기 시간 15초.

CommandTimeout

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다