acid: Recordset schnell in Datenbank speichern

hallo,

ich möchte ein Recordset möglichst schnell in eine Datenbank speichern und suche nach verschiedenen möglichkeiten.

anwendung:
 - bis zu 20 parallele threads welche von verschiedenen server recordsets empfangen
 - ein zieldatenbanksystem
 - programmiersprache .NET C#
 - datenbanksystem: MSSQL
 - recordsets: bis zu 100.000 zeilen

ich möchte jetzt möglichst performant die empfangenen recordsets aus den Threads (Threadsicherheit) in die datenbank drücken.

1. idee: schleife durch das recordset und 100.000 insert statements bauen
   - ist machbar

2. idee: bulk insert verwenden
   - geht nicht da auf arbeit im dateisystem verzichtet werden soll

3. DTS
   - keine erfahrung, komisch, zu unflexibel
   - zu unflexibel weil der insert über steuertabellen variabel gehalten werden soll
   - es muss möglich sein innerhalb von ein paar minuten das ziel des recordsets zu verändern und anzupassen

bulk insert schreibt ohne großartig zu protokollieren und ist deswegen schneller. die einzelnen inserts sind halt sehr viel langsamer.

kennt jemand einen eleganten weg ein großes recordset ohne dateiarbeit und möglichst performant in eine datenbank zu schreiben?

  1. Hallo,

    wie meinst du das mit verschiedenen Threads, jeder Thread ist ein
    aktiver Listener Prozess? Ein Remoting Endpoint, ein SOAP Endpoint?
    Oder ein ThreadPool der auf eine gemeinsame Queue zugreift, für die
    ein anderer Thread ein Listener ist?

    Definiere deinen Begriff "Recordsets". (=DataSets??)

    Du könntest ein Dataset als XML persistieren und dann in MS SQL
    mittels XML Funktionen öffnen und auseinandernehmen. SQLXML könnte
    auch ein Stichwort für dich sein.

    Ciao, Frank