Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Ado Performance steigern

  Alt 4. Dez 2014, 08:23
Dann machen wir was falsch. Wir inserten Mio-Datensätze in Stunden.
Wenn die Performance reicht, nicht (steht doch auch da).

Zitat:
Aber weder das eine noch das Andere wird von ADO nicht unterstützt (ADO wird imho eh nicht weiterentwickelt).
Betrifft AFAIK nur den MS OLE DB Provider for SQL Server, nicht den SQL Server Native Client.
Das kann sein.

Zitat:
BULK INSERT bekommst Du aber mit einem einfachen ADOCommand hin.
Eigentlich schon - oder jedenfalls fast. Du kannst problemlos mehrer INSERTS zu einem einzelnen "BULK" zusammenfassen.
Nein. Äh. Ja, du kannst INSERT-Statements in einen String packen und den dann rüberschicken, das geht viel schneller (eine Transaktion vs. 1000).
Und nein: Du bekommst einen BULK INSERT nicht nur "fast", sondern vollständig hin.
Wenn Du Zugriff auf das Serververzeichnis hast, schreibst Du die Daten dort in eine Datei und führst ein BULK INSERT aus. Geht das so nicht, dann über BCP.EXE. Das liest die Daten lokal ein und bläßt sie übers Netz direkt in den Server.

Eventuell kommst Du über Delphi auch direkt an die SMO, aber da bin ich mir nicht sicher, weil das normalerweise für .NET ist. In den SMO ist ein SqlBulkCopy-Objekt.

BULK INSERT lohnt sich aber erst bei Batches > 5000 Records. Dafür dann aber mit 10k-100k Records pro Sekunde.

SELECT mit OPENROWSET ist auch noch eine Variante. Hab ich aber noch nicht probiert.
  Mit Zitat antworten Zitat