Kurze Antwort ist ja .... hier sind einige Informationen, um meinen Anspruch zu sichern
Es gibt tatsächlich mehrere Stellen, an denen eine Anwendung eine Zeitüberschreitung haben kann, aber eine Zeitüberschreitung bei der Befehlsausführung ...
Ausführungszeit für Befehlsausführung - Diese Eigenschaft ist die kumulative Zeitüberschreitung für alle Netzwerklesevorgänge während der Befehlsausführung oder Verarbeitung der Ergebnisse. Ein Zeitlimit kann immer noch auftreten, nachdem die erste Zeile zurückgegeben wurde, und enthält keine Benutzerverarbeitungszeit, sondern nur die Netzwerklesezeit.
Ein Befehl wird nicht automatisch zurückgesetzt, wenn eine Zeitüberschreitung auftritt. Dies erfordert eine Transaktion um den Code herum, wenn das Zeitlimit überschritten wird.
Wenn ein Timeout auftreten kann, wenn Zeilen zurückgegeben werden, bedeutet dies, dass jederzeit ein Timeout auftreten kann. C # teilt SQL Server nicht mit, dass er den Befehl nicht mehr ausführen soll. Dazu können Dinge wie das Umbrechen des Befehls in einer Transaktion
getan werdenQuelle: Ссылка ... und Erfahrung
Nein. Unten ist eine Reproduktion. Wenn die Zeitüberschreitung auftritt, wird der laufende Prozess beendet und sofort gestoppt. Wenn Sie keine Transaktion angegeben haben, wird die Arbeit, die vor dem Zeitlimit in der gespeicherten Prozedur ausgeführt wurde, beibehalten. Wenn die Verbindung zum Server durch äußere Gewalt unterbrochen wird, beendet SQL Server den laufenden Prozess.
%Vor%erzeugt die folgende Ausgabe
%Vor%, obwohl das Ausführen der gespeicherten Prozedur aus Management Studio 6 Zeilen in dem Zeitrahmen von einer Minute hinzufügt.
Wenn Sie die SQlCommand-Klasse verwenden, wird nach dem Timeout der Anwendung die Ausführung der Abfrage zurückgesetzt.
Meine Gedanken dazu sind, dass es um die Verbindung geht, die durch den Aufruf der Prozedur geöffnet wird. Wenn Ihr Code innerhalb eines using-Blocks ausgeführt wird oder wenn es Müll ist, denke ich, dass die Ausführung des SP zurückgerollt wird.
Tags und Links sql-server c# stored-procedures command-timeout