I have a series of inserts inside of a transaction, followed by a commit. If I query the database with WITH(READUNCOMMITTED) before closing the connection, it appears as expected. However, upon closing the connection, the data disappears. Why isn't the transaction actually committing?
using (SqlConnection db = new SqlConnection(connectionstring))
{
db.Open();
SqlTransaction transaction = db.BeginTransaction("loadRate");
try
{
int id = 0;
using (SqlDataAdapter da = new SqlDataAdapter("usp_1", db))
{
da.SelectCommand.Transaction = transaction;
da.SelectCommand.CommandType = CommandType.StoredProcedure;
id = (int)da.SelectCommand.ExecuteScalar();
}
int id2 = 0;
using (SqlDataAdapter da = new SqlDataAdapter("usp_2", db))
{
da.SelectCommand.Transaction = transaction;
da.SelectCommand.CommandType = CommandType.StoredProcedure;
id2 = (int)da.SelectCommand.ExecuteScalar();
}
transaction.Commit();
Console.WriteLine("Committed data");
}
catch (Exception insertExcept)
{
Console.WriteLine("Exception: " + insertExcept.Message + ". Rolling Back");
try
{
transaction.Rollback();
}
catch (Exception ex2)
{
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
}
}
finally
{
db.Close();
}
}
Credit to @mason for pointing me in the right direction. One of the stored procedures had an uncommitted transaction within it, and while .net's Commit could not close that transaction, closing the connection rolled it back automatically. Thank you for the help!