CommandTimeout

sqlCom.CommandTimeout = 60;

O que significa

CommandTimeout: tempo limite de execução do comando, unidade: segundos

  • Valor padrão: 30 segundos
  • No exemplo definido como 60 → se a instrução SQL não terminar em até 60 segundos, uma exceção de timeout é lançada.
    Saiba diferenciar esses dois tipos de timeout
  1. ConnectionTimeout: configurado na string de conexão, tempo limite para estabelecer conexão com o banco de dados
  2. CommandTimeout: passa a valer após conexão bem‑sucedida, tempo de espera para execução de instruções SQL

Exemplo completo

private void button1_Click(object sender, EventArgs e)
{
    string connectionString = "Data Source=.;Initial Catalog=db;User ID=sa;pwd=xxx";
    // using libera automaticamente o recurso SqlConnection
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();
        SqlCommand sqlCom = new SqlCommand();
        // Associar conexão (escolha uma das duas formas)
        sqlCom.Connection = conn;

        sqlCom.CommandText = "select 1";
        // Define timeout de execução SQL para 60 segundos
        sqlCom.CommandTimeout = 60;

        object obj = sqlCom.ExecuteScalar();
        MessageBox.Show(obj.ToString());
    }
    // Ao sair do bloco using, conn é fechado e liberado automaticamente, não precisa chamar conn.Close() manualmente
}Code language: JavaScript (javascript)

Observações importantes

  1. Não aceita valores negativos. 0 significa espera indefinida (não recomendado, pode travar a aplicação)
  2. Vale apenas para essa instância de SqlCommand, não é uma configuração global
  3. Aumente esse valor quando stored procedures demorarem muito para rodar.
    Na prática, priorize otimizar o SQL, não apenas aumentar o tempo‑limite sem parar.

Forma curta de inicialização (inicializador de objeto)

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

Configuração do timeout de conexão

É declarado dentro da string de conexão e não interfere no CommandTimeout:

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

Connect Timeout=15 → tempo máximo de 15 segundos tentando abrir conexão com banco de dados.

CommandTimeout

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *