SqlBulkCopy: There is insufficient system memory to run this query.
-
Hallo,
ich habe eine weitere Frage, vielleicht hat da wer eine Idee...
Also, ich speichere so ca. 1000-2000 Einträge pro Sekunde per SqlBulkCopy in meine SQL Datenbank. Dabei habe ich bemerkt, das nach ca. 2 Stunden eine "There is insufficient system memory to run this query" Message auftritt, und zwar regelmässig.
Wenn ich mir die Auslagerungsdatei anschaue, seh ich auf sie ab Programmstart langsam an Umfang gewinnt. Bis schliesslich das Programm mit besagter Errormessage abbricht.
Wenn ich danach versuche, per SQL Manager Queries zu machen, bricht er mir ebenfalls ab mit einer System.Outofmemory.Exception.
Also...irgendwie verbrauche ich da massig Arbeitsspeicher, bis er OOM ist. Ich habe aber keine Ahnung wo - kann das die SqlBulkCopy Objekte sein? Der code siet so aus:
DataTable dt = new DataTable(); dt.Columns.Add("SYMBOLNR", typeof(Int32)); dt.Columns.Add("ZEIT", typeof(DateTime)); dt.Columns.Add("BRIEF", typeof(decimal)); SqlBulkCopy bc = new SqlBulkCopy(connString); bc.DestinationTableName = "SCHLUSSKURSE"; bc.ColumnMappings.Add(new SqlBulkCopyColumnMapping(0, 1)); bc.ColumnMappings.Add(new SqlBulkCopyColumnMapping(1, 2)); bc.ColumnMappings.Add(new SqlBulkCopyColumnMapping(2, 3)); do { areBrief.WaitOne(1, false); if (rfsBrief.Count > 0) { RealTimeFeed rf = (RealTimeFeed)rfsBrief.Dequeue(); DataRow dr = dt.NewRow(); dr["SYMBOLNR"] = rf.SymbolNr; dr["ZEIT"] = rf.Zeit; dr["BRIEF"] = rf.Kurs; dt.Rows.Add(dr); if (dbCntBrief % 500 == 0) { SetTextBox2(dbCntBrief.ToString()); bc.WriteToServer(dt); dt.Rows.Clear(); } dbCntBrief++; } } while (1 != 2); }
Hat wer eine Idee dazu?