Hallo zusammen,
ich stehe aktuell auf dem Schlauch. Der Punkt ist folgender. In einer DB auf einem SQLServer wird eine Abfrage per SQLCommand abgefeuert. Es soll eine Datei mit mindestens 500 MB Speicher herunter geladen werden. Der Upload funktioniert auch nicht immer, aber meistens schon. Doch beim Herunterladen erhalte ich den Fehler "System.outOfMemory". Und zwar nach wenigen Sekunden. Das Herunterladen wird über die Funktion gewährleistet.
Ich erhalte zudem den Hinweis, dass ich die Arraygröße vorher festlegen soll. Aber wie soll ich das hier machen? Der Fehler tritt dann in "catch" auf.
ich stehe aktuell auf dem Schlauch. Der Punkt ist folgender. In einer DB auf einem SQLServer wird eine Abfrage per SQLCommand abgefeuert. Es soll eine Datei mit mindestens 500 MB Speicher herunter geladen werden. Der Upload funktioniert auch nicht immer, aber meistens schon. Doch beim Herunterladen erhalte ich den Fehler "System.outOfMemory". Und zwar nach wenigen Sekunden. Das Herunterladen wird über die Funktion gewährleistet.
VB.NET-Quellcode
- Public Function ExecuteSQLQuery(ByRef SQLCommand As SqlCommand, Optional ShowError As Boolean = False, Optional WithSchema As Boolean = False) As DataSet
- 'Gewährleistet eine neue Verbindung
- If Not IsConnected() Then
- Connect()
- End If
- Try
- DS = New DataSet
- 'Für XML Support
- DS.SchemaSerializationMode = SchemaSerializationMode.IncludeSchema
- 'DataAdapter init
- SqlAD = New SqlDataAdapter()
- 'Versuch die Daten 1:1 mit Primärschlüsseln im Adapter abzubilden.
- If WithSchema Then
- SqlAD.MissingSchemaAction = MissingSchemaAction.AddWithKey
- End If
- 'SQL Command und Connection festlegen
- SQLCommand.Connection = Conn
- SqlAD.SelectCommand = SQLCommand
- 'Transaktion gestartet?
- If TransStarted = True Then
- SqlAD.SelectCommand.Transaction = Trans
- End If
- 'Abfrage durchführen und die Daten in die temporäre Tabelle Antwort schreiben
- SqlAD.Fill(DS, "Antwort")
- DS.Tables("Antwort").TableName = "Antwort"
- If TransStarted = False Then
- Conn.Close()
- End If
- Catch ex As Exception
- If ShowError = True Or DEBUG_MODE = True Then
- MessageBox.Show(ex.Message & vbCrLf & SQLCommand.CommandText, "ExecuteSQLQuery", MessageBoxButtons.OK, MessageBoxIcon.Error)
- Else
- Throw
- End If
- End Try
- 'Rückgabe der Antwort
- Return DS
- End Function
Ich erhalte zudem den Hinweis, dass ich die Arraygröße vorher festlegen soll. Aber wie soll ich das hier machen? Der Fehler tritt dann in "catch" auf.