When using automatic transactions, ADO.NET aborted calls to a stored procedure that inserted, updated, or deleted records and returned a recordset. CtreeSqlDataReader Close() used to roll back the automatic transaction causing the observed behavior. The issue has been fixed by changing the close method to always commit the transaction, preserving any insert, update, or delete operation in the stored procedure.