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 wygenerowaniem błędu.

public:
 virtual property int CommandTimeout { int get(); void set(int value); };
public:
 property int CommandTimeout { int get(); void set(int value); };
public override int CommandTimeout { get; set; }
[System.Data.DataSysDescription("DbCommand_CommandTimeout")]
public int CommandTimeout { get; set; }
member this.CommandTimeout : int with get, set
[<System.Data.DataSysDescription("DbCommand_CommandTimeout")>]
member this.CommandTimeout : int with get, set
Public Overrides Property CommandTimeout As Integer
Public Property CommandTimeout As Integer

Wartość właściwości

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

Implementuje

Atrybuty

Uwagi

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

Uwaga

Właściwość CommandTimeout zostanie zignorowana przez starsze wywołania metody asynchronicznej APM (Asynchronous Programming Model), takie jak BeginExecuteReader. Będzie on honorowany przez nowsze metody TAP (Task Asynchronous Programming), takie jak ExecuteReaderAsync.

CommandTimeoutnie ma wpływu, gdy polecenie jest wykonywane względem połączenia kontekstowego (SqlConnectionotwarte z "context connection=true" w parametry połączenia).

Uwaga

Ta właściwość to skumulowany limit 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 powrocie pierwszego wiersza i nie obejmuje czasu przetwarzania użytkownika, tylko czasu odczytu sieciowego.

Na przykład z 30-sekundowym limitem czasu, jeśli Read wymaga dwóch pakietów sieciowych, wówczas ma 30 sekund do odczytania obu pakietów sieciowych. W przypadku ponownego wywołania Read wywołania będzie on miał kolejne 30 sekund do odczytania wszelkich potrzebnych danych.

using System;
using System.Data.SqlClient;
///
public class A {
   ///
   public static void Main() {
      string connectionString = "";
      // 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);
         }
      }
   }
}

Dotyczy

Zobacz też