MySql: lange dauernde Stored Procedure anstoßen, wie asynchrones oder gar kein Feedback möglich?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    MySql: lange dauernde Stored Procedure anstoßen, wie asynchrones oder gar kein Feedback möglich?

    Hallo zusammen,

    ich habe im aktuellen MySQL eine Stored Procedure mit einem Parameter, welche mit SELECT ... INTO OUTFILE Daten in eine Datei auf dem Server schreibt.
    Angestoßen wird das ganze aus einem VB.NET-Programm, das mit dem folgenden Code (Auszug) die SP anstößt.
    Da die SP beliebig lange brauchen kann, möchte ich nicht irgendwelche Timeouts verändern, sondern eigentlich nur die SP anstoßen (fire and forget), das Ergebnis interessiert mich nicht zwingend, wäre nur ein netter Bonus. Ich erkenne es an der fehlenden Datei auch so, wenn mal was nicht funktioniert.
    Das .NET-Programm soll danch eigentlich normal weiterlaufen.
    Mit einer "normalen" Connection laufe ich in einen Timeout. Dann habe ich es mit einer Async-Connection versucht (nach Lektüre des geht guten " Async, Await und Task"-Tutorials von EDR). Leider funktioniert das auch nicht, ich laufe immer noch in einen Timeout - habe ich da bei der Async-Geschichte etwas falsch verstanden?
    Gibt es noch andere Möglichkeiten, eine MySql-SP anzustoßen und dann weiterzumachen?

    VB.NET-Quellcode

    1. Dim conn As MySqlConnection = Me.TableAdapterManagerData.Connection
    2. Dim sqlCmd As MySqlCommand = New MySqlCommand("spExport", conn)
    3. sqlCmd.CommandType = CommandType.StoredProcedure
    4. Dim p1 As MySqlParameter = sqlCmd.Parameters.AddWithValue("sType", cbDataexportProfile.Text)
    5. p1.Direction = ParameterDirection.Input
    6. conn.OpenAsync()
    7. Dim ret As Integer = Await sqlCmd.ExecuteNonQueryAsync
    8. conn.CloseAsync()


    Vielen Dank!
    Michael
    ich kenn mich mit Command-Timeouts nicht aus, aber ich denke nicht, wenn man synchron einen Timeout kriegt, dass man den asynchron dann nicht kriegt.

    also wäre imo das erste Ziel, es hinzukriegen, dasses synchron läuft.

    Da wären DB-Fachleute gefragt, ob man an Connections oder Commands iwas einstellen kann, was die Timeout-Deadline nach hinten rausschiebt.

    Ach zum Kuckuck!
    Einmal kurz "Timeout" im Objectbrowser eingegeben, schon was gefunden:

    Quellcode

    1. Public MustOverride Property CommandTimeout As Integer
    2. Member of System.Data.Common.DbCommand
    3. Summary:
    4. Gets or sets the wait time before terminating the attempt to execute a command and generating an error.
    5. Return Values:
    6. The time in seconds to wait for the command to execute.