title: Default behaviour of an active transaction that was neither committed nor rolled back
body: <p>Say I run the following code in SQL Studio Manager:</p>
  
  <pre><code>begin transaction
  update Person set Name='Ian' where id=1
  </code></pre>
  
  <p>I then close SQL studio manager and I see the following warning: </p>
  
  <blockquote>
    <p>There are uncommitted transactions.  Do you wish to commit these transactions before closing the window?</p>
  </blockquote>
  
  <p>If I select yes, then the transaction is committed.  If I select no then it is rolled back.  </p>
  
  <p>How does this work with a VB6/.NET program? Say I have code that causes an error/exception and the transaction is neither committed nor rolled back (like it should be).  Does the transaction remain active indefinitely or is there a time limit? Is the transaction committed or rolled back?</p>
  
  <p><strong>Update</strong>
  I have written  a VB6 program, which:</p>
  
  <pre><code>1) Establishes a connection to a database
  2) Executes the following SQL statement inside a serialized  transaction: UPDATE Person SET Name='Ian' WHERE ID=1 (Name  changed from Ian)
  3) Throw an error and close application without committing nor rolling back the transaction
  </code></pre>
  
  <p>I then open SQL studio manager and execute the following statement:</p>
  
  <pre><code>select * from person where id=1
  </code></pre>
  
  <p>SQL Studio hangs i.e. it does not return a result.  I then run steps 1-3 again, this time rolling back the transaction properly. The program completes successfully i.e. the row is not locked for the VB6 client.  I am then able to run the SELECT statement in SQL Studio Manager (it returns a result): </p>
  
  <pre><code>select * from person where id=1
  </code></pre>
  
  <p>Does the connection pool keep the transaction open?</p>