2009-05-11 11 views

Antwort

101

Ja. CommandTimeout ist, wie lange ein einzelner Befehl dauern kann. ConnectionTimeout ist, wie lange es dauern kann, um mit dem Server eine Verbindung herzustellen. Sie können zum Beispiel relativ lange Abfragen ausführen - es ist vollkommen in Ordnung, wenn sie 10 Minuten brauchen, um fertig zu werden, aber wenn es 10 Minuten dauerte, um die Verbindung herzustellen, würden Sie wissen, dass etwas war schlimm falsch.

+0

Aus Neugier: Da das Standard-Timeout 30 Sekunden ist, was passiert, wenn ich CommandTimeout auf 60 Sekunden setze, aber nicht ConnectionTimeout von der Standardeinstellung ändern? – flipdoubt

+2

Was meinst du? Entweder setzen Sie CommandTimeout oder Sie sind nicht ... –

+4

Aus Gründen der Argumentation sagen wir, ich habe eine! ** & # Q @? Abfrage, die 32 Sekunden dauert. Wenn ich SqlCommand.CommandTimeout = 40 setze aber SqlConnection.ConnectionTimeout auf seinem Standardwert (vermutlich 30) belasse, wird der Verbindungstimeout? Mit anderen Worten, muss ich beide Eigenschaften festlegen? Es klingt, als ob Sie "nein" sagen, aber ich muss die SqlConnection.ConnectionTimeout-Eigenschaft vergessen haben und begann zu fragen, ob die Einstellung CommandTimeout alles tut, was ich brauche. – flipdoubt

23

SqlCommand.CommandTimeout = Zeitlimit für Ihre SQL-Abfrage. Bedeutet, wie lange eine Abfrage (zB: SELECT, UPDATE) für ihre Ausführung dauern kann. Wenn es SqlCommand.CommandTimeout überschreitet, wird die Ausführung gestoppt. Ein Befehl Zeitüberschreitungsfehler wird auftreten.

SqlConnection.ConnectionTimeout = Zeitlimit für Ihre Verbindung. Bedeutet, wie lange Ihr Verbindungsobjekt versuchen kann, eine Verbindung herzustellen. Wenn es die angegebene Zeit überschreitet, wird die Verbindung unterbrochen. Ein Verbindungszeitüberschreitungsfehler wird auftreten.

10

ConnectionTimeout gibt die Dauer, bevor eine Zeitüberschreitung zu warten, wenn sie offen ein SqlConnection versucht. Es ist relevant für den Befehl Connection.Open().

während

SqlCommand.CommandTimeout spezifiziert die Dauer für eine SqlCommand zu warten, bevor eine Zeitüberschreitung. Dies geschieht, nachdem eine Verbindung geöffnet wurde und eine der Methoden ExecuteXXX für das Command-Objekt aufgerufen wurde.

2
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1 
set LOCK_TIMEOUT = 600//set TIMEOUT with ms 
+1

Dies ist ein 3. Typ von Timeout. Nicht einer der beiden, nach denen der Themeninhaber fragt. Und beantwortet die Frage nicht. Ich werde es nicht, weil ich nicht weiß, was die Frage vor der Bearbeitung war. –

6

Zusätzliche Informationen

Standardwert von CommandTimeout beträgt 30 Sekunden. Null (0) gibt kein Limit an. Sie können CommandTimeout Wert nur in Codierung festlegen.

Der Standardwert von ConnectiontTimeout ist 15 Sekunden. Null (0) gibt auch keine Grenze an. Wert kleiner als Null (minus Wert) wird ArgumentException erhalten. Sie können den Wert ConnectionTimeout sowohl in der Codierungs- als auch in der Konfigurationsdatei festlegen.