Sdílet prostřednictvím


SqlCommand.CommandTimeout Vlastnost

Definice

Získá nebo nastaví čekací dobu (v sekundách) před ukončením pokusu o spuštění příkazu a generování chyby. Výchozí hodnota je 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

Hodnota vlastnosti

Doba v sekundách čekání na provedení příkazu. Výchozí hodnota je 30 sekund.

Výjimky

Sada hodnot je menší než 0.

Poznámky

Hodnota 0 značí žádné omezení (pokus o provedení příkazu bude čekat neomezeně dlouho).

Poznámka

Vlastnost CommandTimeout bude ignorována během asynchronních volání metod starého stylu, jako BeginExecuteReaderje . Bude respektován novějšími asynchronními metodami, jako ExecuteReaderAsyncje .

Poznámka

Tato vlastnost je kumulativní časový limit (pro všechny síťové pakety, které se čtou při vyvolání metody) pro všechna čtení v síti během provádění příkazu nebo zpracování výsledků. K vypršení časového limitu může dojít i po vrácení prvního řádku a nezahrnuje dobu zpracování uživatele, pouze dobu čtení v síti.

Pokud například při vypršení 30sekundového časového limitu Read vyžaduje dva síťové pakety, má aplikace na přečtení obou síťových paketů 30 sekund. Pokud zavoláte Read znovu, bude mít další 30 sekund na přečtení všech požadovaných dat.

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

Platí pro