Actually,I have used SqlBulkCopy
for inserting rows into my DB
and I have placed transactions to the SqlBulkCopy
.
Now,My Scenario is that,I have a DataTable
containing 500k
rows and I'm trying to insert them through SqlBulkCopy
.
My Code :
using (con)
{
con.Open();
using (SqlTransaction transaction = con.BeginTransaction())
{
using (SqlBulkCopy SBC = new SqlBulkCopy(con, SqlBulkCopyOptions.Default, transaction))
{
SBC.DestinationTableName = "SURVEY_EMAIL_BLAST";
//SBC.BatchSize = 100;
SBC.BulkCopyTimeout = 0;
SqlBulkCopyColumnMapping mapEMAILID = new SqlBulkCopyColumnMapping("EMAILID", "EMAILID");
SBC.ColumnMappings.Add(mapEMAILID);
try
{
int k = dtEmails.Rows.Count;
SBC.WriteToServer(dtEmails);
transaction.Commit();
}
catch (System.Exception ex)
{
transaction.Rollback();
}
SBC.Close();
}
}
con.Close();
}
It is taking very long time to insert.
When ever I stop my execution,the data is still inserting in DB with out Rolling Back