¿Cuál es el inconveniente de SqlBulkCopy

sqlbulkcopy

Pregunta

He investigado un poco sobre "La mejor manera de insertar grandes datos en DB con C #", luego mucha gente me sugirió usar SqlBulkCopy. Después lo probé y realmente me sorprendió. Sin lugar a dudas, SqlBulkCopy es muy, muy rápido. Parece que SqlBulkCopy es una manera perfecta de insertar datos (especialmente datos enormes). Pero ¿por qué no lo usamos en todo momento? ¿Hay algún inconveniente de usar SqlBulkCopy?

Respuesta aceptada

Dos razones que se me ocurren:

  1. Que yo sepa, solo está disponible para Microsoft SQL Server
  2. En una gran cantidad de cargas de trabajo normales, no hace insert masivas, sino insert ocasionales entremezcladas con select y update . Los propios Microsoft afirman que una insert normal es más eficiente para eso, en la página MSDN de SqlBulkCopy .

Tenga en cuenta que si desea que una SqlBulkCopy sea ​​equivalente a una inserción normal, como mínimo tendrá que pasarle el parámetro SqlBulkCopyOptions.CheckConstraints .


Respuesta popular

SqlBulkCopy también existe para Oracle v11, pero es proporcionado por los ensamblajes de Oracle .NET que obtiene al instalar Oracle Client. La clase SqlBulkCopy se implementa básicamente una por una, por el proveedor del motor de base de datos de destino.

Un gran inconveniente, sin embargo, no hay absolutamente ningún informe de errores. Si, por ejemplo, ha actualizado los datos en un DataSet, lo está devolviendo a la base de datos con un adaptador, y hay una violación clave (o cualquier otra falla), el DataRows culpable tendrá .HasErrors establecidos en true, y puede agregue eso a su mensaje de excepción cuando se genere.

Con SqlBulkCopy, solo obtienes el tipo de error y eso es todo. Buena suerte depurándolo.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué