Gibt es einen Unterschied zwischen SqlCommand.CommandTimeout
und SqlConnection.ConnectionTimeout
in .NET?
.net
sqlconnection
sqlcommand
Dhanapal
quelle
quelle
Antworten:
Ja.
CommandTimeout
ist, wie lange ein einzelner Befehl dauern kann.ConnectionTimeout
Gibt an, wie lange es dauern kann, bis eine Verbindung zum Server hergestellt ist.Beispielsweise führen Sie möglicherweise Abfragen mit relativ langer Laufzeit aus. Es ist vollkommen in Ordnung, dass der Vorgang 10 Minuten dauert. Wenn Sie jedoch zunächst 10 Minuten benötigen, um die Verbindung herzustellen, wissen Sie, dass ein Fehler vorliegt.
quelle
SqlCommand.CommandTimeout = Zeitlimit für Ihre SQL-Abfrage. Bedeutet, wie viel Zeit eine Abfrage (z. B. SELECT, UPDATE) für ihre Ausführung benötigen kann. Wenn es SqlCommand.CommandTimeout überschreitet, stoppt es die Ausführung. Ein Befehlszeitlimitfehler tritt auf.
SqlConnection.ConnectionTimeout = Zeitlimit für Ihre Verbindung. Bedeutet, wie viel Zeit Ihr Verbindungsobjekt versuchen kann, eine Verbindung herzustellen. Wenn die angegebene Zeit überschritten wird, wird die Verbindung unterbrochen. Ein Verbindungs-Timeout-Fehler tritt auf.
quelle
ConnectionTimeout
Gibt die Wartezeit an, bevor beim Versuch, eine zu öffnen, eine Zeitüberschreitung auftrittSqlConnection
. Es ist relevant für denConnection.Open()
Befehl.während
SqlCommand.CommandTimeout
hat die Dauer angegeben, die ein SqlCommand warten soll, bevor eine Zeitüberschreitung auftritt. Dies geschieht, nachdem eine Verbindung geöffnet und eine derExecuteXXX
Methoden für das Command-Objekt aufgerufen wurde.quelle
Zusätzliche Information
Der Standardwert von
CommandTimeout
ist 30 Sekunden. Null (0) zeigt keine Begrenzung an. Sie können denCommandTimeout
Wert nur in Codierung festlegen .Der Standardwert von
ConnectiontTimeout
ist 15 Sekunden. Null (0) zeigt ebenfalls keine Begrenzung an. Ein Wert unter Null (Minuswert) wird erhaltenArgumentException
. Sie können denConnectionTimeout
Wert sowohl in der Codierungs- als auch in der Konfigurationsdatei festlegen .quelle
quelle
Kurzer Hinweis zu CommandTimeout, da es eine Eigenschaft von Connection- und Command-Objekten ist ...
Die CommandTimeout-Einstellung für ein Verbindungsobjekt hat keine Auswirkungen auf die CommandTimeout-Einstellung für ein Command-Objekt für dieselbe Verbindung. Das heißt, die CommandTimeout-Eigenschaft des Command-Objekts erbt nicht den Wert des CommandTimeout-Werts des Verbindungsobjekts.
Die CommandTimeout-Einstellung für ein Verbindungsobjekt wirkt sich also nur auf Befehle aus, die nur unter dem Verbindungsobjekt ausgeführt werden (ohne Verwendung eines Befehlsobjekts).
Wenn Sie beispielsweise eine Verbindung zu einem gespeicherten Prozess herstellen und dem Befehlsobjekt Parameter hinzufügen und das Befehlsobjekt über die Verbindung eines Verbindungsobjekts ausführen, müssen Sie CommandTimeout für das Command-Objekt und ConnectionTimeout für das Connection-Objekt festlegen, um beide zu überschreiben Standardeinstellungen. Durch Festlegen des CommandTimeout für das Verbindungsobjekt wird das Standardzeitlimit für die Command Object-Befehle nicht überschrieben.
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/commandtimeout-property-ado?view=sql-server-ver15 https://docs.microsoft.com/en-us / sql / ado / reference / ado-api / verbindungszeitüberschreitung-eigenschaft-ado? view = sql-server-ver15
quelle