Frage

Ich habe eine lang laufende SQL-Anweisung, die ich ausführen möchte, und egal, was ich in die „timeout="-Klausel meiner Verbindungszeichenfolge eingebe, sie scheint immer nach 30 Sekunden zu enden.

Ich benutze es einfach SqlHelper.ExecuteNonQuery() um es auszuführen und es sich um das Öffnen von Verbindungen usw. zu kümmern.

Gibt es etwas anderes, das mein Zeitlimit überschreiben oder dazu führen könnte, dass SQL Server es ignoriert?Ich habe den Profiler für die Abfrage ausgeführt und die Ablaufverfolgung sieht nicht anders aus, wenn ich sie in Management Studio ausführe, als in meinem Code.

Management Studio schließt die Abfrage in etwa einer Minute ab, aber selbst wenn das Zeitlimit auf 300 oder 30.000 eingestellt ist, läuft mein Code immer noch nach 30 Sekunden ab.

War es hilfreich?

Lösung

Womit legen Sie das Timeout in Ihrer Verbindungszeichenfolge fest?Aus dem Speicher ist das „ConnectionTimeout“ und wirkt sich nur auf die tatsächlich benötigte Zeit aus verbinden an den Server.

Jeder einzelne Befehl verfügt über ein separates „CommandTimeout“, nach dem Sie suchen.Ich bin mir jedoch nicht sicher, wie SqlHelper das implementiert.

Andere Tipps

Zusätzlich zum Timeout in der Verbindungszeichenfolge, Versuchen Sie es mit der Timeout-Eigenschaft des SQL-Befehls.Unten finden Sie ein C#-Beispiel unter Verwendung der SqlCommand-Klasse.Das Äquivalent sollte auf das anwendbar sein, was Sie verwenden.

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top