Estoy intentando insertar una gran cantidad de registros en SQL Server 2005 desde Vb.Net. Aunque la inserción funciona bien, hago todo lo posible para tratar de hacerlo lo más rápido posible. Actualmente, toma ~ 11 minutos para 100.000 registros. ¿Cuál sería el enfoque sugerido para insertar una gran cantidad de registros en SQL Server desde una aplicación?Inserción masiva en el servidor Sql
Mi enfoque actual es, básicamente, abrir la conexión, iterar a través de mi lista de información y desconectar declaraciones de inserción SQL individuales, y luego cerrar la conexión. ¿Alguien tiene una mejor sugerencia sobre cómo hacer esto?
Función actual:
Public Sub BatchInsert(ByVal ParamCollections As List(Of SqlParameter()))
Dim Conn As SqlConnection = New SqlConnection(DBHelper.DatabaseConnection)
Using scope As TransactionScope = New TransactionScope()
Using Conn
Dim cmd As SqlCommand = New SqlCommand("sproc_name", Conn)
Conn.Open()
cmd.CommandType = CommandType.StoredProcedure
For i = 0 To ParamCollections.Count - 1
cmd.Parameters.Clear()
cmd.Parameters.AddRange(ParamCollections(i))
cmd.ExecuteNonQuery()
Next
Conn.Close()
scope.Complete()
End Using
End Using
End Sub
Siempre que el OP esté bien al no registrar estas transacciones, esto es genial. El uso de BCP eliminará la capacidad de deshacer los datos (no como realmente se usa la mayor parte del tiempo de todos modos). – StingyJack
Estoy buscando en el Bulk Copy ahora. Parece que tendré que convertir mis datos en una DataTable para aprovechar la Copia masiva. ¿El proceso de creación y carga de DataTable compensará las ganancias de Copia de compilación? – Nathan
No. El tiempo requerido para construir la tabla de datos será muy pequeño en comparación con el tiempo que está gastando ahora. –