Udostępnij za pośrednictwem


SqlCommand.CommandTimeout Właściwość

Definicja

Pobiera lub ustawia czas oczekiwania (w sekundach) przed zakończeniem próby wykonania polecenia i wygenerowania błędu. Wartość domyślna to 30 sekund.

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

Wartość właściwości

Czas w sekundach oczekiwania na wykonanie polecenia. Wartość domyślna to 30 sekund.

Wyjątki

Zestaw wartości jest mniejszy niż 0.

Uwagi

Wartość 0 oznacza brak limitu (próba wykonania polecenia będzie czekać na czas nieokreślony).

Uwaga

Właściwość CommandTimeout zostanie zignorowana podczas wywołań metod asynchronicznych w starym stylu, takich jak BeginExecuteReader. Będzie on honorowany przez nowsze metody asynchroniczne, takie jak ExecuteReaderAsync.

Uwaga

Ta właściwość jest skumulowanym limitem czasu (dla wszystkich pakietów sieciowych, które są odczytywane podczas wywołania metody) dla wszystkich odczytów sieci podczas wykonywania polecenia lub przetwarzania wyników. Przekroczenie limitu czasu może nadal występować po zwróceniu pierwszego wiersza i nie obejmuje czasu przetwarzania użytkownika, tylko czasu odczytu w sieci.

Na przykład z 30-sekundowym limitem czasu, jeśli Read wymaga dwóch pakietów sieciowych, ma 30 sekund do odczytania obu pakietów sieciowych. Jeśli wywołasz Read wywołanie ponownie, będzie miało kolejne 30 sekund na odczytanie wszystkich potrzebnych danych.

// <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>

Dotyczy