Поделиться через


SqlCommand.CommandTimeout Свойство

Определение

Возвращает или задает время ожидания (в секундах) перед прекращением попытки выполнить команду и выводом ошибки. По умолчанию это 30 секунд.

public:
 virtual property int CommandTimeout { int get(); void set(int value); };
public override int CommandTimeout { get; set; }
member this.CommandTimeout : int with get, set
Public Overrides Property CommandTimeout As Integer

Значение свойства

Время в секундах, в течение которого должно происходить ожидание выполнения команды. По умолчанию это 30 секунд.

Исключения

Заданное значение меньше 0.

Комментарии

Значение 0 указывает на отсутствие ограничений (попытка выполнения команды будет ждать неограниченное время).

Примечание

Свойство CommandTimeout будет игнорироваться при вызовах асинхронных методов старого стиля, таких как BeginExecuteReader. Он будет учитываться новыми асинхронными методами, такими как ExecuteReaderAsync.

Примечание

Это свойство представляет собой совокупное время ожидания (для всех сетевых пакетов, которые считываются во время вызова метода) для всех сетевых операций чтения во время выполнения команды или обработки результатов. Время ожидания по-прежнему может возникать после возврата первой строки и не включает время обработки пользователем, а только время чтения по сети.

Например, при истечении времени ожидания 30 секунд, если Read требуется два сетевых пакета, у него есть 30 секунд для чтения обоих сетевых пакетов. При повторном вызове Read у него будет еще 30 секунд на чтение всех необходимых данных.

// <Snippet1>
using System;
using Microsoft.Data.SqlClient;

public class A
{
    public static void Main()
    {
        string connectionString = "<Your-connection-string-here>";
        // Wait for 5 second delay in the command
        string queryString = "waitfor delay '00:00:05'";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            SqlCommand command = new SqlCommand(queryString, connection);
            // Setting command timeout to 1 second
            command.CommandTimeout = 1;
            try
            {
                command.ExecuteNonQuery();
            }
            catch (SqlException e)
            {
                Console.WriteLine("Got expected SqlException due to command timeout ");
                Console.WriteLine(e);
            }
        }
    }
}
// </Snippet1>

Применяется к