sqlCom.CommandTimeout = 60;
의미
CommandTimeout:명령 실행 제한 시간, 단위: 초
- 기본값:30초
- 예제에서는 60으로 설정 → SQL 실행이 60초 안에 끝나지 않으면 타임아웃 예외가 발생합니다
두 가지 타임아웃 설정을 구분해야 합니다
ConnectionTimeout:연결 문자열에 설정, 데이터베이스 연결 수립 타임아웃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)
주의사항
- 음수는 설정할 수 없습니다. 0은 무한 대기를 의미하며 권장하지 않습니다. 프로그램이 멈출 수 있습니다
- 현재 해당
SqlCommand인스턴스에만 적용되며 전역 설정이 아닙니다 - 저장 프로시저 실행이 오래 걸릴 때 이 값을 늘립니다.
실무에서는 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
Previous: SqlCommand
Next: 실행 최적화 및 매개변수 전달