Hej.
Ska lägga in 2 miljoner poster i en databas.
Ska foreach loopa och använda INSERT INTO Och en massa SELECT @@IDENTITY för att jag ska uppdatera andra tabeller samtidigt med ID numrena, därav är ju transaktion nödvändig.
Men jag är lite kluven.... ska jag lägga transaktionskopplingen i eller utanför forloopen?. Pallar verkligen Sql servern Rollbacka 2 miljoner poster om 1 endaste post skulle gå åt pipan vid insättningen?, eller ska jag skapa ett Transaction objekt vid varje loop?, så ifall nåt går snett Rollbackas bara den 1 post som gick snett och inte hela skiten. skål :birp
SÅHÄR:
SqlCommand.Connection.Open();
SqlCommand.Transaction=SqlCommand.Connection.BeginTransaction(IsolationLevel.Serializable);
try
{
foreach(DataRow rowsen in thetable.Rows)
{
//INSERT, SELECT @@IDENTITY, INSERT etc etc osv osv.
}//foreach
SqlCommand.Transaction.Commit();
}
catch(Exception fuckup)
{
SqlCommand.Transaction.Rollback();
}
thetable.Dispose();
SqlCommand.Connection.Close();
ELLER SÅHÄR:
foreach(DataRow rowsen in thetable.Rows)
{
SqlCommand.Connection.Open();
SqlCommand.Transaction=SqlCommand.Connection.BeginTransaction(IsolationLevel.Serializable);
try
{
//INSERT, SELECT @@IDENTITY, INSERT etc etc osv osv.
SqlCommand.Transaction.Commit();
}
catch(Exception fuckup)
{
SqlCommand.Transaction.Rollback();
}
SqlCommand.Transaction.Dispose();
SqlCommand.Connection.Close();
}//foreach
thetable.Dispose();