I have a set of objects (stored in a linkedlist) that need to be inserted into a SQL Server 2005 table.
This solution here is deadly slow. I have about 10K records to insert. Every once in a while I pause and only see a few more execution done.
Can anyone help to improve this?
using (SqlConnection dbConnection = new SqlConnection(connectionString))
{
dbConnection.Open();
SqlTransaction dbTrans = dbConnection.BeginTransaction();
SqlCommand cmd = dbConnection.CreateCommand();
cmd.Transaction = dbTrans;
foreach (MyRecord myr in Records)
{
cmd.CommandText = buildInsertionString(MyRecord)
cmd.ExecuteNonQuery();
}
dbTrans.Commit();
dbConnection.Close();
}
public string buildinsertionString(Myrecod myr){
string sqlCommandString = "insert into Table1 values";
string values = "'" + myr.field1 + "',"
+ myr.field2 + ","
+ "'" + myr.field3 + "',"
+ "'" + myr.field4 + "',"
+ "'" + myr.field5 + "',"
+ "'" + myr.field6 + "'";
return sqlCommandString + "(" + values + ");
}
Use
SQLBulkCopy(System.Data.SqlClient):The SQL generated uses the
BULK INSERTcommand and functionality present in SQL Server 2005 and newer.Note:
Recordsmust be of typeDataRow,DataTable, or useIDataReader.