title: ZombieCheck Exception - This SqlTransaction has completed; it is no longer usable -- during simple commit
body: <p>I have the following code which performs a commit of a single row to a database table (SQL 2008 / .NET 4)</p>
  
  <pre><code>using (var db = new MyDbDataContext(_dbConnectionString))
  {
      Action action = new Action();
      db.Actions.InsertOnSubmit(dbAction);
      db.SubmitChanges();
  }
  </code></pre>
  
  <p>Normally everything is fine, but once in a while I get the following exception:</p>
  
  <pre><code>System.InvalidOperationException: This SqlTransaction has completed; it is no longer usable.
  at System.Data.SqlClient.SqlTransaction.ZombieCheck()
  at System.Data.SqlClient.SqlTransaction.Rollback()
  at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
  </code></pre>
  
  <p>There are a number of similar questions on SO but I after reading them I cannot work out the cause. </p>
  
  <p>Could this be simply due to a SQL timeout (the exception occurs close to 25s after the call is made)? Or should I expect a SQL timeout exception in that case?</p>
  
  <p>Does anyone know what else may cause this?</p>