Frage zu Speicher-Ressource bei .Net-Datenübernahme-Programm

18/03/2010 - 10:06 von M.Erlinger | Report spam
Hallo

ich habe ein Datenübernahme-Programm in .Net geschrieben, dass aus
einer Datenbank eine Tabelle mit "BinaryLargeObjects" liest, und in
eine neue Datenbank schreibt (gleicht Tabellen-Struktur) - in dieser
Tabelle sind an die 30 GB Daten (Dokumente, Bilder, PDF,TIFF).

Mein Problem ist, dass ich den Lauf der Übernahme immer nur für max.
300 Datensàtze starten kann - und dann manuell das Programm schließen,
und wieder neu beginnen muss.
Wenn ich es für mehr Datensàtze starte, dann stürzt die Applikation
immer nach 350 (mehr oder weniger) Datensàtzen ab - mit der
Fehlermeldung, dass der Speicher voll wàre

Ich befülle eine DataTable via OleDbDataAdapter - hole mir aber nicht
alle Zeile auf einen Schlag, sondern lese immer nur Zeile für Zeile -
innerhalb einer for-Schleife, die den PrimaryKey hochzàhlt.
In einer eigenen Methode kopiere ich dann die Zeile in eine zweite
DataTable, mit anderen OldDbDataAdapter - und schreibe innerhalb einer
Transaction den Datensatz in die andere Datenbank.

Vielleicht kann mir hier bitte jemand einen Tipp geben, worauf ich
hier achten könnte, dass nicht immer der Speicher voll-làuft.
Danke & schönen Gruß
Michael
 

Lesen sie die antworten

#1 Pawel Warmuth
18/03/2010 - 13:35 | Warnen spam
Hi Michael,
<
< ich habe ein Datenübernahme-Programm in .Net geschrieben, dass aus
< einer Datenbank eine Tabelle mit "BinaryLargeObjects" liest, und in
< eine neue Datenbank schreibt (gleicht Tabellen-Struktur) - in dieser
< Tabelle sind an die 30 GB Daten (Dokumente, Bilder, PDF,TIFF).
<
Kannst du uns den teil des Codes posten ?
<Mein Problem ist, dass ich den Lauf der Übernahme immer nur für max.
<300 Datensàtze starten kann - und dann manuell das Programm schließen,
<und wieder neu beginnen muss.
<Wenn ich es für mehr Datensàtze starte, dann stürzt die Applikation
<immer nach 350 (mehr oder weniger) Datensàtzen ab - mit der
<Fehlermeldung, dass der Speicher voll wàre

Ich denke es wird daran liegen das das Datenobjekt in deinem Fall der
Adapter nicht neu initialisiert wird und dadruch "anwàchst".
Es wàre sicher besser du würdest nach x Datensàtzen das Objekt neu
initialisieren und den GC seine Arbeit machen lassen

Grüße
Pawel



Mein Problem ist, dass ich den Lauf der Übernahme immer nur für max.
300 Datensàtze starten kann - und dann manuell das Programm schließen,
und wieder neu beginnen muss.
Wenn ich es für mehr Datensàtze starte, dann stürzt die Applikation
immer nach 350 (mehr oder weniger) Datensàtzen ab - mit der
Fehlermeldung, dass der Speicher voll wàre

Ich befülle eine DataTable via OleDbDataAdapter - hole mir aber nicht
alle Zeile auf einen Schlag, sondern lese immer nur Zeile für Zeile -
innerhalb einer for-Schleife, die den PrimaryKey hochzàhlt.
In einer eigenen Methode kopiere ich dann die Zeile in eine zweite
DataTable, mit anderen OldDbDataAdapter - und schreibe innerhalb einer
Transaction den Datensatz in die andere Datenbank.

Vielleicht kann mir hier bitte jemand einen Tipp geben, worauf ich
hier achten könnte, dass nicht immer der Speicher voll-làuft.
Danke & schönen Gruß
Michael

Ähnliche fragen