Inserimento di dati di massa in SQL: OLEDB IRowsetFastLoad vs. Ado.Net SqlBulkCopy

ado.net oledb sqlbulkcopy sql-server

Domanda

Sto valutando diversi metodi per l'inserimento di grandi quantità di dati nel server SQL. Ho trovato la classe SqlBulkCopy dall'interfaccia Ado.Net e IRowsetFastLoad da OLEDB. Per quanto ne so, IRowsetFastLoad non si associa a C #, che è la mia piattaforma di base, quindi sto valutando se valga la pena di creare un wrapper su IRowsetFastLoad per .net, quindi posso usarlo sulla mia applicazione.

Qualcuno sa se IRowsetFastLoad effettivamente funzionerebbe meglio di SqlBulkInsert - Sarebbe degno creare tale wrapper?

Risposta accettata

SqlBulkCopy è l'equivalente gestito di IRowsetFastLoad , dovrebbero funzionare allo stesso modo. Nel client, come regola generale, OleDB è più veloce di ADO.Net a causa della disponibilità dei bind, che consentono un trasferimento più rapido dei dati dentro e fuori l'API (richiede meno memcopy perché i buffer sono noti in anticipo, fissi e pre -allocated). ADO.Net offre un modello di programmazione molto più semplice, ma non è possibile ottenere dati da ADO.Net con una copia. Ma per tutti tranne l'accesso più critico, la differenza dovrebbe essere impossibile da misurare.

Quando si tratta della differenza che conta, l'accesso al server, entrambi useranno l'API di caricamento rapido INSERT BULK (non disponibile da T-SQL diretto) e ciò che conta davvero.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché