Frage

Ich verwende sqlclient.sqlcommand -Objekt, um ein paar gespeicherte Procs auf meinem DB auszuführen. Normalerweise dauert es, wenn ich diese manuell über den Abfrageanalysator betreibe, bis zu 15 Minuten.

Wenn ich sie also mit dem SQLCommand -Objekt ausführe, erhalte ich eine SQLCommand -Auszeit.

Ich weiß, ich könnte die Zeitüberschreitungseigenschaft auf eine sehr hohe Zahl einstellen, aber ich frage mich, ob es alternativ eine Möglichkeit gibt, nur die Procs zu starten und die Verbindung zu trennen. Ich brauche keinen Rückgabewert.

Irgendwelche Vorschläge? Ich bin nicht daran interessiert, die Verarbeitungszeit jedes SP hier zu optimieren, sondern nur herauszufinden, ob es eine Option "Set it" gibt.

Hier ist der Inhalt des SQLCommand -Objekts:

using (SqlCommand cmd = new SqlCommand(@"update tbl_SYS_DATE set RPT_DATE = @inputDate
                                                    exec sp_Get_Bp_Data1
                                                    exec sp_Get_Bp_Data2          
                                                    exec sp_Get_Bp_Data3
                                                    exec sp_channel_data1
                                                    exec sp_channel_data2
                                                    exec sp_channel_data3
                                                    ", con))
War es hilfreich?

Lösung

Sie können eine asynchronisierende Methode wie BeginexecutenonQuery verwenden. Dafür wird die Auszeit dafür ignoriert.

Andere Tipps

Verwenden Sie die asynchrone Methode Call BeginexecutenonQuery. Aus Die MSDN -Seite

Die CommandTimeout -Eigenschaft wird während asynchroner Methodenaufrufe wie Beginexecutereader ignoriert.

Sie können diesen Code aus einem Hintergrund -Thread ausführen. Sie könnten in die schauen Hintergrundbearbeiter Objekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top