Freigeben über


SqlCommand.CommandTimeout Eigenschaft

Definition

Ruft die Zeit (in Sekunden) ab, die gewartet werden soll, bis der Versuch einer Befehlsausführung beendet und ein Fehler generiert wird, oder legt diese fest. Der Standardwert ist 30 Sekunden.

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

Eigenschaftswert

Die Dauer in Sekunden, für die auf die Ausführung des Befehls gewartet werden soll. Der Standardwert ist 30 Sekunden.

Ausnahmen

Der festgelegte Wert ist kleiner als 0.

Hinweise

Der Wert 0 gibt kein Limit an (ein Versuch, einen Befehl auszuführen, wartet unbegrenzt).

Hinweis

Die CommandTimeout -Eigenschaft wird bei asynchronen Methodenaufrufen im alten Stil ignoriert, z. B BeginExecuteReader. . Die neueren asynchronen Methoden wie ExecuteReaderAsync.

Hinweis

Diese Eigenschaft ist das kumulative Timeout (für alle Netzwerkpakete, die während des Aufrufs einer Methode gelesen werden) für alle Netzwerklesevorgänge während der Befehlsausführung oder -verarbeitung der Ergebnisse. Ein Timeout kann weiterhin auftreten, nachdem die erste Zeile zurückgegeben wurde, und umfasst keine Benutzerverarbeitungszeit, nur die Netzwerklesezeit.

Wenn beispielsweise bei einem Timeout Read von 30 Sekunden zwei Netzwerkpakete erforderlich sind, haben sie 30 Sekunden Zeit, um beide Netzwerkpakete zu lesen. Wenn Sie erneut aufrufen Read , haben Sie weitere 30 Sekunden Zeit, um alle benötigten Daten zu lesen.

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

Gilt für: